aboutsummaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2020-06-26 10:17:45 +0200
committerCharles <sircharlesaze@gmail.com>2020-06-26 10:17:45 +0200
commit81ae67c934e58ba65c37244ccf21f7cd469ade3e (patch)
treea35135a3ec073db01769e07867366e9cdcac5930 /src/main.rs
parentc4184968ec1cf9bcf8a9305ce858d5a56d34468d (diff)
downloadhuffman-81ae67c934e58ba65c37244ccf21f7cd469ade3e.tar.gz
huffman-81ae67c934e58ba65c37244ccf21f7cd469ade3e.tar.bz2
huffman-81ae67c934e58ba65c37244ccf21f7cd469ade3e.zip
Added serialization
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs40
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);
}