25 releases (15 breaking)
0.18.0 | Nov 12, 2024 |
---|---|
0.17.0 | May 1, 2024 |
0.16.0 | May 1, 2024 |
0.15.0 | Feb 7, 2024 |
0.3.3 | Feb 27, 2017 |
#23 in Data structures
767,204 downloads per month
Used in 238 crates
(42 directly)
66KB
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
~0.6–1MB
~16K SLoC