3 unstable releases
0.2.1 | Oct 29, 2022 |
---|---|
0.2.0 | Oct 20, 2022 |
0.1.0 | Jan 23, 2021 |
#161 in Compression
2,120 downloads per month
Used in 7 crates
(5 directly)
29KB
479 lines
lz-str-rs
A port of lz-string to Rust.
Installing
Add the following to your Cargo.toml
file:
[dependencies]
lz-str = "0.1.0"
Getting Started
// The demonstrated functions correspond with `LZString.compress` and `LZString.decompress` from the JS version.
fn main() {
let data = "The quick brown fox jumps over the lazy dog";
// Compress the data. This cannot fail.
let compressed_data = lz_str::compress(data);
// Decompress the data.
// This may return `Option::None` if it fails.
// Make sure to do error-checking in a real application to prevent crashes!
let decompressed_data =
lz_str::decompress(compressed_data).expect("`compressed_data` is invalid");
// The decompressed_data should be the same as data, except encoded as UTF16.
// We undo that here.
// In a real application,
// you will want to do error checking to prevent users from causing crashes with invalid data.
let decompressed_data =
String::from_utf16(&decompressed_data).expect("`decompressed_data` is not valid UTF16");
assert!(data == decompressed_data);
}
See the examples directory for more examples.
Features
rustc-hash
: This feature will replace some internal maps' hashers with rustc-hash,
boosting performance at the cost of not using a DOS-resistant hasher.
Testing
cargo test
Benching
cargo bench
Bindings
Authors
adumbidiot (Nathaniel Daniel)
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.
Contributing
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 above, without any additional terms or conditions.