Use explicit reference-counted clones

This commit is contained in:
2026-07-31 03:41:53 +02:00
parent 09a7a2595a
commit 30ebe9ce74
+9 -9
View File
@@ -90,7 +90,7 @@ fn test_send_type_erased_vec_retains_send_elements_across_threads() {
#[test]
fn test_send_sync_type_erased_vec_retains_elements() {
let value = Arc::new(42);
let mut erased = SendSyncTypeErasedVec::new(vec![value.clone()]);
let mut erased = SendSyncTypeErasedVec::new(vec![Arc::clone(&value)]);
assert_eq!(erased.length(), 1);
assert_eq!(erased.layout(), Layout::new::<Arc<i32>>());
@@ -207,7 +207,7 @@ fn test_clear_drops_elements() {
let mut vec = Vec::with_capacity(5);
for _ in 0..5 {
vec.push(DropTracker::new(drop_count.clone()));
vec.push(DropTracker::new(Rc::clone(&drop_count)));
}
let initial_cap = vec.capacity();
@@ -266,7 +266,7 @@ fn test_clear_is_unwind_safe_when_element_drop_panics() {
let has_panicked = Rc::new(Cell::new(false));
let mut erased = TypeErasedVec::new(vec![PanicOnFirstDrop {
has_panicked: has_panicked.clone(),
has_panicked: Rc::clone(&has_panicked),
}]);
let result = panic::catch_unwind(panic::AssertUnwindSafe(|| {
@@ -312,7 +312,7 @@ fn test_try_as_type_clears_elements() {
let mut vec = Vec::with_capacity(5);
for _ in 0..3 {
vec.push(DropTracker::new(drop_count.clone()));
vec.push(DropTracker::new(Rc::clone(&drop_count)));
}
let initial_cap = vec.capacity();
@@ -332,7 +332,7 @@ fn test_try_as_type_clears_elements() {
fn test_guard_with_unwind_safety() {
let drop_count = Rc::new(Cell::new(0));
let mut vec = Vec::with_capacity(10);
vec.push(DropTracker::new(drop_count.clone()));
vec.push(DropTracker::new(Rc::clone(&drop_count)));
let mut erased = TypeErasedVec::new(vec);
assert_erased_state(&erased, 1, Layout::new::<DropTracker>());
@@ -341,7 +341,7 @@ fn test_guard_with_unwind_safety() {
let mut guard = unsafe { erased.cast_type::<DropTracker>() };
guard.with(|v| {
v.push(DropTracker::new(drop_count.clone()));
v.push(DropTracker::new(Rc::clone(&drop_count)));
panic!("Simulated panic inside with()");
});
}));
@@ -382,7 +382,7 @@ fn test_conversion_methods() {
fn test_try_into_vec_failure_and_recovery() {
let drop_count = Rc::new(Cell::new(0));
let mut vec = Vec::with_capacity(5);
vec.push(DropTracker::new(drop_count.clone()));
vec.push(DropTracker::new(Rc::clone(&drop_count)));
let initial_cap = vec.capacity();
let erased = TypeErasedVec::new(vec);
@@ -465,7 +465,7 @@ fn test_into_vec_unchecked_panics_on_layout_mismatch_in_debug() {
fn test_sendable_clears_and_unpacks() {
let drop_count = Rc::new(Cell::new(0));
let mut vec = Vec::with_capacity(5);
vec.push(DropTracker::new(drop_count.clone()));
vec.push(DropTracker::new(Rc::clone(&drop_count)));
let initial_cap = vec.capacity();
let erased = TypeErasedVec::new(vec);
@@ -483,7 +483,7 @@ fn test_sendable_clears_and_unpacks() {
fn test_drop_cleans_up_allocation() {
let drop_count = Rc::new(Cell::new(0));
let mut vec = Vec::with_capacity(5);
vec.push(DropTracker::new(drop_count.clone()));
vec.push(DropTracker::new(Rc::clone(&drop_count)));
{
let erased = TypeErasedVec::new(vec);