diff options
| author | Charles <sircharlesaze@gmail.com> | 2020-06-26 10:17:45 +0200 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2020-06-26 10:17:45 +0200 |
| commit | 81ae67c934e58ba65c37244ccf21f7cd469ade3e (patch) | |
| tree | a35135a3ec073db01769e07867366e9cdcac5930 /src/main.rs | |
| parent | c4184968ec1cf9bcf8a9305ce858d5a56d34468d (diff) | |
| download | huffman-81ae67c934e58ba65c37244ccf21f7cd469ade3e.tar.gz huffman-81ae67c934e58ba65c37244ccf21f7cd469ade3e.tar.bz2 huffman-81ae67c934e58ba65c37244ccf21f7cd469ade3e.zip | |
Added serialization
Diffstat (limited to 'src/main.rs')
| -rw-r--r-- | src/main.rs | 40 |
1 files changed, 25 insertions, 15 deletions
diff --git a/src/main.rs b/src/main.rs index 920aee2..a54a3bd 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,30 +1,40 @@ use std::env; -use std::fs; +// use std::fs; +use std::io; use std::io::Read; +use std::io::Write; pub mod tree; pub mod bits; +pub mod conversion; use tree::Tree; -use bits::BitSet; fn main() { - let file_path = env::args().nth(1).unwrap(); + if let Some(s) = env::args().nth(1) { + if s != "d" { + return + } + // let data: Vec<u8> = io::stdin().bytes().map(|x| x.unwrap()).collect(); + // deserialize - let f = fs::File::open(file_path).unwrap(); - let data: Vec<u8> = f.bytes().map(|x| x.unwrap()).collect(); + } else { + // let f = fs::File::open(file_path).unwrap(); - let tree = Tree::from_data(&data); - tree.put(); + let data: Vec<u8> = io::stdin().bytes().map(|x| x.unwrap()).collect(); - let bitmap = tree.to_bit_map(); - for (k, v) in bitmap.iter() { - println!("{:4} {:?}", format!("{:?}", *k as char), v); - } + let tree = Tree::from_data(&data); + // print!("{:?}", tree); + + let table = conversion::Table::from_tree(&tree); + // print!("{:?}", table); + + let converted_data = table.convert(data); + // println!("{:?}", converted_data); + + let header = table.serialize(); - let mut bitset = BitSet::new(); - for byte in data { - bitset.concat(&bitmap[&byte]); + io::stdout().write_all(&header).unwrap(); + io::stdout().write_all(&converted_data).unwrap(); } - println!("{:?}", bitset); } |
