This program was created as a fun project of mine after having to implement Huffman coding for a university project. It utilizes the bitvec crate to create the bitsequences. The performance of this program is honestly pretty bad, I have yet to do further analysis on that. The file format for the compressed files is something I came up with, so afaik it doesn't conform to any standard (if there even is one).
huff_rs 1.0
Thomas Lindae <thomas.lindae@in.tum.de>
Compresses files with huffman encoding
USAGE:
huff_rs <SUBCOMMAND>
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
SUBCOMMANDS:
decode Decodes the specified file
encode Encodes the specified file
help Prints this message or the help of the given subcommand(s)
It's best to use cargo to install huff_rs
:
cargo install huff_rs
To build huff_rs
:
git clone https://github.com/Treeniks/huff_rs
cd huff_rs
cargo build --release
./target/release/huff_rs --version
To encode a file:
huff_rs encode file.txt
The default output filename will be the same as the input with the extension replaced by .huff
.
You can also specify the output filename with -o
:
huff_rs encode file.txt -o compressed.huff
To decode a file:
huff_rs decode file.huff
The default output filename will be the same as the input with the extension replaced by .txt
.
You can also specify the output filename with -o
:
huff_rs decode file.huff -o original.txt
There is 2 main things that this project still needs:
- adding checks for correct file format in decode
Currently the program doesn't check for the correct file format. As such, if you give it the wrong file format, it will either give a random error or panic. - better testing
I have not implemented proper testing yet, only one small test for a single string.