#byte #serialization

no-std bytes-kman

serialize and deserialize bytes, a simple way to comunicate to other computer or to save state!

23 releases

0.3.0 May 20, 2023
0.2.0 May 13, 2023
0.1.20 Apr 23, 2023
0.1.19 Feb 18, 2023
0.1.9 Dec 31, 2022

#739 in Encoding

Download history 1/week @ 2024-06-16 3/week @ 2024-06-23 9/week @ 2024-07-07 120/week @ 2024-07-28 3/week @ 2024-08-04 4/week @ 2024-08-25 6/week @ 2024-09-01 3/week @ 2024-09-08 73/week @ 2024-09-22 28/week @ 2024-09-29

105 downloads per month
Used in 4 crates

GPL-3.0 license

57KB
1.5K SLoC

Bytes

Crates.io

is used for serialize and deserialize

is useful because is more faster and smaller then json!
But not human readable!

Examples

use bytes_kman::prelude::*;

#[derive(Bytes)]
pub struct Package{
    id: u16,
    message: String
}


pub fn main(){
    let pak = Package{
        id: 21
        message: String::from("This is a message")
    };

    let mut bytes = pak.to_bytes();
    bytes.reverse();

    let other = Package::from_bytes(&mut bytes).unwrap();

    assert_eq!(pak, other);
}
use bytes_kman::prelude::*;

pub fn main(){
    let num = 32u8;
    let bytes = num::to_bytes();
    assert_eq!(bytes; vec![32]) 
}
use bytes_kman::prelude::*;

pub fn main(){
    let num = 32;
    let bytes = num::to_bytes();
    assert_eq!(bytes; vec![32, 0, 0, 0]) 
}
use bytes_kman::prelude::*;

pub fn main(){
    let string = "Hello World!".to_string();
    let bytes = num::to_bytes();
    //                    this is the string length 'H' 'e'  'l'  'l'  'o'  ' ' 'W' 'o'  'r'  'l'  'd' '!'
    //                     >>>>>>>>>>>>^<<<<<<<<<<   ^   ^    ^    ^    ^    ^   ^   ^    ^    ^    ^   ^
    assert_eq!(bytes; vec![12, 0, 0, 0, 0, 0, 0, 0, 72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]) 
}
use bytes_kman::prelude::*;

pub fn main(){
    let string = "Hello World!".to_string();

    let mut bytes = num::to_bytes();
    bytes.reverse(); // when reading is inversed

    let other = String::from_bytes(&mut bytes).unwrap() // if don't have enough bytes will result in an error!
    // bytes = []
    // bytes will be consumed!
    // other = "Hello World!"
    assert_eq!(string, other) 
}

Rust toolchain: stable 1.65.0

Dependencies

~1.5MB
~35K SLoC