hfmn 0.1.0

A flexible Huffman coding implementation
Documentation
use itertools::Itertools;

#[test]
fn through_short() {
    let test_str = "abbcccddddeeeee";

    let encoder = hfmn::CodeBook::from_data(test_str.chars().collect::<Vec<_>>()).unwrap();
    let encoded = encoder
        .encode_data(test_str.chars().collect::<Vec<_>>())
        .unwrap();

    println!("{}", encoder);

    for s in encoded.iter() {
        print!("{}, ", s);
    }
    println!();

    let (encoded, num_symbols) = hfmn::chain(&encoded);

    // println!("Encoder: {:?}", encoder);

    for b in encoded.iter() {
        println!("{:08b}", b);
    }

    let decoded = encoder.decode_data(&encoded, num_symbols).unwrap();

    assert_eq!(
        test_str.chars().collect::<Vec<_>>(),
        decoded.iter().map(|b| **b).collect_vec()
    )
}