Crates.io | jce |
lib.rs | jce |
version | 0.1.1 |
source | src |
created_at | 2022-12-04 06:24:48.829278 |
updated_at | 2022-12-04 08:20:58.408011 |
description | Jce implementation in Rust |
homepage | https://github.com/LaoLittle/rust-jce |
repository | https://github.com/LaoLittle/rust-jce |
max_upload_size | |
id | 729503 |
size | 49,198 |
jce
is a Jce encoding/decoding implementation for the
Rust programing language.
Why jce
?
use jce::JceStruct;
#[derive(JceStruct, PartialEq, Debug)]
struct Person {
name: String, // tag = 0
age: u8, // tag = 1
#[jce(tag = "5")]
male: bool, // tag = 5
phone: u64, // tag = 6
#[jce(tag = "11")]
home: Home, // tag = 11
}
#[derive(JceStruct, PartialEq, Debug)]
struct Home {
location: String, // tag = 0
}
fn main() {
let person = Person {
name: "Jack".into(),
age: 12,
male: true,
phone: 1145141919810,
home: Home {
location: "下北泽".into()
}
};
let mut b = vec![0u8; 0];
person.encode(&mut b);
println!("{:?}", &*b);
let decode = Person::decode(&*b).unwrap();
assert_eq!(person, decode);
}
Jce Type | Rust Type |
---|---|
BYTE | i8 / u8 |
SHORT | i16 / u16 |
INT | i32 / u32 |
LONG | i64 / u64 |
FLOAT | f32 |
DOUBLE | f64 |
SHORT_BYTES / LONG_BYTES | Vec<u8> / Bytes / String |
MAP | HashMap<K, V> |
LIST | Vec<T> |
STRUCT_START + STRUCT_END | JceStruct |
EMPTY | Option<T> |
SINGLE_LIST | Vec<u8> / Bytes |