asan/
asan.rs

1use any_intern::{AnyInterner, Interner};
2
3fn main() {
4    test_interner_should_call_drop();
5    test_any_interner_should_call_drop();
6}
7
8fn test_interner_should_call_drop() {
9    #[derive(PartialEq, Eq, Hash)]
10    struct A(Box<u32>);
11
12    #[derive(PartialEq, Eq, Hash)]
13    struct B(Box<u32>);
14
15    let interner = Interner::new();
16
17    const N: u32 = 1000;
18    for i in 0..N {
19        interner.intern_static(A(Box::new(i)));
20        interner.intern_static(B(Box::new(i)));
21    }
22}
23
24fn test_any_interner_should_call_drop() {
25    #[derive(PartialEq, Eq, Hash)]
26    struct A(Box<u32>);
27
28    let interner = AnyInterner::of::<A>();
29
30    const N: u32 = 1000;
31    for i in 0..N {
32        unsafe {
33            interner.intern(A(Box::new(i)));
34        }
35    }
36}