Expand description
use comprez_macro::Comprezable;
use comprez::{*, error::{CompressError, DecompressError}, comprezable::Comprezable};   
 
#[derive(Comprezable, Debug)]
struct MyStruct {
    [#maxNum=10000] //Compulsory for each field
    num1: u32,
    [#maxNum=888]
    num2: u16,
    [#maxNum=100] //from -100 to 100
    num3: i8,
    other_struct: OtherStruct,
    vec1: Vec<u8>
}
 
#[derive(Comprezable, Debug)]
struct OtherStruct {
    #[maxNum=1000000]
    num4: u128,
}

fn main() {
    let demo_data = Mystruct {
        num1: 900,
        num2: 100,
        num3: 10,
        other_struct: OtherStruct { num4: 200 },
        vec1: vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
    };
     
    let compressed = demo_data.compress().unwrap()
    let compressed_bytes = compressed.to_bytes();
    let compressed_binaries = compressed.to_binaries();
     
    let compressed = Compressed::from_bytes(compressed_bytes);
    let compressed = Compressed::from_binaries(compressed_binaries);
    let decompressed = Mystruct::decompressed(compressed).unwrap();
    println!("{:?}", decompressed);
}

Note

Since the compression of Vec uses LZ4 flex crate, compressing small vectors might increase the space instead. However in the future, self implementation will be created.

Modules

Trait for compressing structs

Enums

Wrapper for compression results and decompression arguments