Cover scoped guard lifecycle
This commit is contained in:
@@ -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];
|
||||
|
||||
Reference in New Issue
Block a user