chore: checkpoint before Python removal

This commit is contained in:
2026-03-26 22:33:59 +00:00
parent 683cec9307
commit e568ddf82a
29972 changed files with 11269302 additions and 2 deletions

64
vendor/dyn-clone/tests/trait.rs vendored Normal file
View File

@@ -0,0 +1,64 @@
#![cfg(target_has_atomic = "ptr")]
use dyn_clone::DynClone;
use std::fmt::{self, Display};
use std::sync::{Arc, Mutex};
struct Log {
id: u64,
events: Arc<Mutex<Vec<String>>>,
}
impl Clone for Log {
fn clone(&self) -> Self {
Log {
id: self.id + 1,
events: self.events.clone(),
}
}
}
impl Display for Log {
fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
write!(formatter, "id={}", self.id)
}
}
impl Drop for Log {
fn drop(&mut self) {
self.events.lock().unwrap().push(format!("dropping {self}"));
}
}
#[test]
fn clone_sized() {
let arc = Arc::new(0);
assert_eq!(Arc::strong_count(&arc), 1);
let c = dyn_clone::clone(&arc);
assert_eq!(Arc::strong_count(&arc), 2);
drop(c);
assert_eq!(Arc::strong_count(&arc), 1);
}
#[test]
fn clone_trait_object() {
trait MyTrait: Display + Sync + DynClone {}
impl MyTrait for Log {}
let events = Arc::new(Mutex::new(Vec::new()));
let mut expected = Vec::new();
{
let b11: Box<dyn MyTrait> = Box::new(Log {
id: 11,
events: events.clone(),
});
let b12 = dyn_clone::clone_box(&*b11);
assert_eq!(b11.to_string(), "id=11");
assert_eq!(b12.to_string(), "id=12");
expected.push("dropping id=12".to_owned());
expected.push("dropping id=11".to_owned());
}
assert_eq!(*events.lock().unwrap(), expected);
}