use refuse::{CollectionGuard, Ref, Root};
fn main() {
let guard = CollectionGuard::acquire();
let values: Vec<Ref<u32>> = (1..=3).map(|value| Ref::new(value, &guard)).collect();
let values = Root::new(values, &guard);
drop(guard);
refuse::collect();
let (one, two, three) = (values[0], values[1], values[2]);
let mut guard = CollectionGuard::acquire();
assert_eq!(one.load(&guard), Some(&1));
assert_eq!(two.load(&guard), Some(&2));
assert_eq!(three.load(&guard), Some(&3));
drop(values);
guard.collect();
assert_eq!(one.load(&guard), None);
}