22 releases (12 breaking)
0.15.0 | Feb 7, 2024 |
---|---|
0.14.0 | Oct 27, 2021 |
0.13.0 | Aug 25, 2021 |
0.12.2 | Jan 11, 2021 |
0.3.3 | Feb 27, 2017 |
#47 in Data structures
278,588 downloads per month
Used in 121 crates
(28 directly)
68KB
1.5K
SLoC
String Interner
Continuous Integration | Test Coverage | Documentation | Crates.io |
---|---|---|---|
A data structure to cache strings efficiently, with minimal memory footprint and the ability to assicate the interned strings with unique symbols. These symbols allow for constant time comparisons and look-ups to the underlying interned string contents. Also, iterating through the interned strings is cache efficient.
Contributing
Testing
Test the project using
cargo test --release
Memory Allocation Tests
To further test memory consumption and allocations performed by the different string interner backends test the project as follows:
cargo test --release --features test-allocations -- --test-threads 1
- The
--features test-allocations
enables the memory allocations tests. - The
--test-thread 1
argument is required for the memory allocations tests since otherwise they interfere with each other causing them to randomly fail. - Use
--nocapture
to receive verbose output useful for debugging.
Profiling & Benchmarks
Benchmark the string interner and its various backends using
cargo bench
License
Licensed under either of
- Apache license, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Dual licence:
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as below, without any additional terms or conditions.
Dependencies
~1.2–1.6MB
~23K SLoC