3 releases
0.1.3 | Mar 2, 2021 |
---|---|
0.1.2 |
|
0.1.1 | Mar 1, 2021 |
0.1.0 | Mar 1, 2021 |
#21 in #huffman-coding
16KB
313 lines
huff_rs
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).
Help
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)
Installation
It's best to use cargo to install huff_rs
:
cargo install huff_rs
Building
To build huff_rs
:
git clone https://github.com/Treeniks/huff_rs
cd huff_rs
cargo build --release
./target/release/huff_rs --version
Usage
Encode
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
Decode
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
TODO
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.
Dependencies
~2.2–3MB
~59K SLoC