Cover scoped guard lifecycle

This commit is contained in:
2026-07-31 04:24:06 +02:00
parent e1a771b4d8
commit 813a55b930
+32
View File
@@ -860,6 +860,38 @@ fn test_scoped_borrowed_zst_behavior() {
assert_eq!(erased.capacity(), usize::MAX);
}
#[test]
fn test_scoped_guard_reserve_restore_and_take() {
let first = String::from("first");
let second = String::from("second");
let mut erased = TypeErasedVec::new(Vec::<&'static str>::new());
{
let mut guard = erased.as_type_scoped::<&str>();
guard.reserve(4);
assert!(guard.capacity() >= 4);
guard.with(|values| {
values.push(&first);
values.push(&second);
});
assert_eq!(guard.as_slice(), &["first", "second"]);
let retained_ptr = guard.as_slice().as_ptr();
let retained_capacity = guard.capacity();
let taken = guard.take();
assert_eq!(taken, vec!["first", "second"]);
assert_eq!(taken.as_ptr(), retained_ptr);
assert_eq!(taken.capacity(), retained_capacity);
assert_guard_state(&guard, 0);
assert_eq!(guard.capacity(), 0);
}
assert!(erased.is_empty());
assert_eq!(erased.capacity(), 0);
}
#[test]
fn test_unchecked_methods() {
let vec = vec![123_u32];