8 breaking releases

Uses old Rust 2015

0.10.0 Feb 28, 2016
0.9.0 Jun 7, 2015
0.8.0 Jun 5, 2015

#23 in #en

Download history 12668/week @ 2023-11-19 20522/week @ 2023-11-26 12030/week @ 2023-12-03 11109/week @ 2023-12-10 18747/week @ 2023-12-17 3451/week @ 2023-12-24 7058/week @ 2023-12-31 9043/week @ 2024-01-07 8427/week @ 2024-01-14 12233/week @ 2024-01-21 9427/week @ 2024-01-28 12854/week @ 2024-02-04 16550/week @ 2024-02-11 8956/week @ 2024-02-18 16336/week @ 2024-02-25 10879/week @ 2024-03-03

54,230 downloads per month
Used in 398 crates (7 directly)

MIT/Apache

23KB
582 lines

lzw

LZW en- and decoding


lib.rs:

LZW decoder and encoder

This crates provides a LzwEncoder and LzwDecoder. The code words are written from and to bit streams where it is possible to write either the most or least significant bit first. The maximum possible code size is 16 bits. Both types rely on RAII to produced correct results.

The de- and encoder expect the LZW stream to start with a clear code and end with an end code which are defined as follows:

  • CLEAR_CODE == 1 << min_code_size
  • END_CODE == CLEAR_CODE + 1

Examplary use of the encoder:

 use lzw::{LsbWriter, Encoder};
 let size = 8;
 let data = b"TOBEORNOTTOBEORTOBEORNOT";
 let mut compressed = vec![];
 {
     let mut enc = Encoder::new(LsbWriter::new(&mut compressed), size).unwrap();
     enc.encode_bytes(data).unwrap();
 }

No runtime deps

Features