comprez_macro 0.2.7

Partner in crime with comprez, a library to compress structs and enums
Documentation

# Rust Library for Compressing Structs and Enums.


A rust library for compressing and decompressing structs.
Note that the library is still under heavy development and breaking changes may occur.

## Description

The library is not complete yet, For now only struct with unsigned integers fields are supported. Many more will come. Stay tune.


## Installation


Put this into your cargo.toml

```
[dependencies]
comprez_macro = 0.2.7
comprez = 0.2.7
```



## Example


```
use comprez_macro::Comprezable;
use comprez::comprezable::Comprezable;   

#[derive(Comprezable, Debug, Clone)]

struct MyStruct {
    [#maxNum=10000] //Compulsory for each integer field except for u8
    num1: u32,
    [#maxNum=888]
    num2: u16,
    [#maxNum=100]
    num3: i8, //use i8 instead of u8
    other_struct: OtherStruct,
    vec1: Vec<u8>,
    vec2: Vec<OtherStruct>,
    enum1: MyEnum::Num5(10)
}

#[derive(Comprezable, Debug, Clone)]

struct OtherStruct {
    #[maxNum=1000000]
    num4: u128,
}

#[derive(Comprezable, Debug, Clone)]

enum MyEnum {
    #[maxNum=100]
    Num5(u32),
    Vec3(Vec<u8>)
}

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],
        vec2: vec![OtherStruct{num4: 100}, OtherStruct{num4: 200}],
    };
    
    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);
}
```
## Performance


TODO!


## Features


- [x] Unsigned 
- [x] Signed 
- [x] Vec::u8
- [x] Vec of Comprezable(s)
- [x] enums
- [ ] Async Write/Read 
- [ ] Even numbers
- [ ] Strings
- [ ] Slices & Vectors


## Credits


- Vector of u8 are compressed using LZ4 flex library.


## A coffee?

[!["Buy Me A Coffee"](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://www.buymeacoffee.com/najidnadri)