Crate lzma_rust2

Crate lzma_rust2 

Source
Expand description

LZMA / LZMA2 / LZIP / XZ compression ported from tukaani xz for java.

This is a fork of the original, unmaintained lzma-rust crate to continue the development and maintenance.

§Safety

Only the optimization feature uses unsafe Rust features to implement optimizations, that are not possible in safe Rust. Those optimizations are properly guarded and are of course sound. This includes creation of aligned memory, handwritten assembly code for hot functions and some pointer logic. Those optimization are well localized and generally consider safe to use, even with untrusted input.

Deactivating the optimization feature will result in 100% standard Rust code.

§Performance

When compared against the liblzma crate, which uses the C library of the same name, this crate has improved decoding speed.

Encoding is also well optimized and is surpassing liblzma for level 0 to 3 and matches it for level 4 to 9.

§no_std Support

This crate supports no_std environments by disabling the default std feature.

When used in no_std mode, the crate provides custom Read, Write, and Error types (defined in no_std.rs) that are compatible with no_std environments. These types offer similar functionality to their std::io counterparts but are implemented using only core and alloc.

The custom types include:

  • Error: A custom error enum with variants for different error conditions.
  • Read: A trait similar to std::io::Read with read() and read_exact() methods.
  • Write: A trait similar to std::io::Write with write(), write_all(), and flush() methods.

Default implementations for &[u8] (Read) and &mut [u8] (Write) are provided.

Note that multithreaded features are not available in no_std mode as they require standard library threading primitives.

§License

Licensed under the Apache License, Version 2.0.

Modules§

filter
Implements filter used by both the 7z and XZ file format.

Structs§

AutoFinisher
A wrapper around a writer that finishes the stream on drop.
FilterConfigxz
Configuration for a filter in the XZ filter chain.
LzipOptionsencoder and lzip
Options for LZIP compression.
LzipReaderlzip
A single-threaded LZIP decompressor.
LzipReaderMtstd and lzip
A multi-threaded LZIP decompressor.
LzipWriterencoder and lzip
A single-threaded LZIP compressor.
LzipWriterMtencoder and std and lzip
A multi-threaded LZIP compressor.
Lzma2Optionsencoder
Options for LZMA2 compression.
Lzma2Reader
A single-threaded LZMA2 decompressor.
Lzma2ReaderMtstd
A multi-threaded LZMA2 decompressor.
Lzma2Writerencoder
A single-threaded LZMA2 compressor.
Lzma2WriterMtstd and encoder
A multi-threaded LZMA2 compressor.
LzmaOptionsencoder
Encoder settings when compressing with LZMA and LZMA2.
LzmaReader
A single-threaded LZMA decompressor.
LzmaWriterencoder
A single-threaded LZMA compressor.
XzOptionsencoder and xz
Configuration options for XZ compression.
XzReaderxz
A single-threaded XZ decompressor.
XzReaderMtstd and xz
A multi-threaded XZ decompressor.
XzWriterencoder and xz
A single-threaded XZ compressor.
XzWriterMtencoder and std and xz
A multi-threaded XZ compressor.

Enums§

CheckTypexz
Supported checksum types in XZ format.
EncodeModeencoder
The mode to use when encoding.
FilterTypexz
Supported filter types in XZ format.
MfType
Match finders to use when encoding.

Constants§

DICT_SIZE_MAX
The maximal size of a dictionary.
DICT_SIZE_MIN
The minimal size of a dictionary.

Functions§

get_extra_size_beforeencoder
Calculates the extra space needed before the dictionary for LZMA2 encoding.
lzma2_get_memory_usage
Calculates the memory usage in KiB required for LZMA2 decompression.
lzma_get_memory_usage
Calculates the memory usage in KiB required for LZMA decompression.
lzma_get_memory_usage_by_props
Calculates the memory usage in KiB required for LZMA decompression from properties byte.

Type Aliases§

Resultstd
Result type of the crate.