Expand description
A DroplessInterner hands out Interned references for arbitrary types.
Note: It is a logic error to modify the returned reference via interior mutability in a way that changes the values produced by Eq and Hash.
See the standard library HashSet for more details.
use cl_structures::intern::dropless_interner::DroplessInterner;
use cl_arena::dropless_arena::DroplessArena;
let da = DroplessArena::new();
let di: DroplessInterner<'_, ()> = DroplessInterner::new(da);
let unit1 = di.get_or_insert(());
let unit2 = di.get_or_insert(());
let unit3 = di.get(&()).unwrap();
assert_eq!(unit1, unit3);
assert_eq!(unit2, unit1);
assert_eq!(unit3, unit2);use cl_structures::intern::dropless_interner::DroplessInterner;
use cl_arena::dropless_arena::DroplessArena;
let da = DroplessArena::new();
let di: DroplessInterner<'_, [i32; 10]> = DroplessInterner::new(da);
let arr1 = di.get_or_insert([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
let arr2 = di.get_or_insert([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
let arr3 = di.get(&[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]).unwrap();
assert_eq!(arr1, arr3);
assert_eq!(arr2, arr1);
assert_eq!(arr3, arr2);
let arr4 = di.get_or_insert([10, 9, 8, 7, 6, 5, 4, 3, 2, 1]);
assert_ne!(arr1, arr4);Structsยง
- Dropless
Interner - A DroplessInterner hands out Interned references for arbitrary types.