12 releases (3 stable)
Uses new Rust 2024
| new 1.2.0 | Dec 3, 2025 |
|---|---|
| 1.1.0 | Nov 25, 2025 |
| 1.0.0 | Jun 15, 2025 |
| 0.5.0 | May 19, 2025 |
| 0.4.0 | Mar 28, 2025 |
#1085 in Rust patterns
24KB
459 lines
An object interner library
The main element of this crate is the Interner struct.
It allows to build a "storage" of any kind of object that avoids repetition and memory waste.
Example (String interner)
use interns::*;
let mut interner = Interner::<str>::default();
let a = interner.get_or_intern("hello");
let b = interner.get_or_intern("world");
let c = interner.get_or_intern("hello");
let a_resolv = interner.resolve(a);
let b_resolv = interner.resolve(b);
let c_resolv = interner.resolve(c);
assert_eq!(a_resolv, Some("hello"));
assert_eq!(b_resolv, Some("world"));
assert_eq!(c_resolv, Some("hello"));
assert_eq!(a, c);
assert_ne!(a, b);
assert_ne!(b, c);
Object interner in Rust
== Documentation ==
To build the documentation, run cargo doc
Or browse it online at https://docs.rs/interns
==== Copyright (C) 2025 Saúl Valdelvira
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 3.
Dependencies
~625KB