SkillAgentSearch skills...

Compressing

Basic (and naive) LZW and Huffman compression algorithms in Rust.

Install / Use

/learn @lffg/Compressing
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Naive implementation of the LZW and Huffman compression algorithms.

To run, install the Rust toolchain. Cargo may be used to compile the source.

Example,

$ cargo run

Usage: cmpr [OPTIONS] -a <ALGORITHM> <COMMAND>

Commands:
  compress
  decompress
  help        Print this message or the help of the given subcommand(s)

Options:
  -a <ALGORITHM>      The algorithm to use for compress or decompress [possible values: lzw, huffman]
      --stats         Whether the program should show statistics
  -h, --help          Print help
  -V, --version       Print version

Compress a file using the LZW algorithm (assuming cargo build --release):

$ ./target/release/cmpr -a lzw --stats compress -o Cargo.lock.lzw Cargo.lock
done.
    in 1 ms
    saved 35.10%

Decompress the same file:

$ ./target/release/cmpr -a lzw --stats decompress -o recovered-Cargo.lock Cargo.lock.lzw
done.
    in 0 ms

The script cmp.sh may be used to test the compression algorithm by compressing, decompressing and comparing with the original file. E.g.,

$ ./cmp.sh Cargo.lock
    Finished release [optimized] target(s) in 0.06s
cmpr 0.1.0
compressing [Cargo.lock] into [Cargo.lock.cmp]...
done.
    in 1 ms
    saved 35.10%
decompressing [Cargo.lock.cmp] into [recovered-Cargo.lock]...
done.
    in 2 ms
ok

Related Skills

View on GitHub
GitHub Stars11
CategoryDevelopment
Updated1y ago
Forks0

Languages

Rust

Security Score

75/100

Audited on Feb 20, 2025

No findings