- Notifications
You must be signed in to change notification settings - Fork1
High-level Rust bindings for the lzham codec.
License
nextonesfaster/lzham
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
High-level Rust bindings forlzham codec built upon the lower-levellzham-sys crate.
You must havecmake
and a C++ compiler to build this crate, as thelzham-sys crate buildslzham library and does not search for a prebuilt library.
Add the following to yourCargo.toml
:
[dependencies]lzham ="0.1.1"
use lzham::{compress, decompress};let data =String::from("This is a test.");letmut comp =Vec::new();let status =compress(&mut data.as_bytes(),&mut comp);assert!(status.is_success());letmut decomp =Vec::new();let status =decompress(&mut comp.as_slice(),&mut decomp, data.len());assert!(status.is_success());
lzham
supports both static and dynamic linking. To link statically, you can either setLIBLZHAM_STATIC
orLZHAM_STATIC
environment variables to true, or use thestatic
feature.
To link dynamically, use thedynamic
feature.
If you don't set any environment variables or use any features, the build will be the expected default library linking method based on OS or target. For Windows, macOS and Linux with musl, it will bestatic
. For Linux without musl, it will bedynamic
.
Note that environment variables take precedence over features. In case of any ambiguity, it uses the default linking method.
The crate has the following two features:
static
: Links to the library staticallydynamic
: Links to the library dynamically
These set the appropriatelzham-sys features, which is responsible for building and linking the library.
lzham
is available under the MIT license. SeeLICENSE for more details.
About
High-level Rust bindings for the lzham codec.