Jcers
A Encode/Decode lib for Jce.
Features
derive: derive macro support
How to use
use jcers::{JceGet, JcePut};
#[derive(Debug, Default, JceGet, JcePut)]
pub struct YouJceStruct { // only support NamedStruct
#[jce(0)] // jce tag
pub a_named_field: u8, // a field
}
let s: YouJceStruct = jcers::from_buf(&mut buf).unwrap(); // buf should impl bytes::Buf
JceType
| JceCode |
JceType |
RustType |
| 0 |
u8 |
u8 |
| 1 |
i16 |
i16 |
| 2 |
i32 |
i32 |
| 3 |
i64 |
i64 |
| 4 |
f32 |
f32 |
| 5 |
f64 |
f64 |
| 6 |
ShortString |
String |
| 7 |
LongString |
String |
| 8 |
Map |
HashMap<K, V> |
| 9 |
List |
Vec<V> |
| 10 |
Struct |
T |
| 11 |
StructEnd |
- |
| 12 |
Empty |
T::default() |
| 13 |
bytes |
bytes::Bytes |
Other
u16 will be encoded as i32
u32 will be encoded as i64
u16 and u32 can't be decoded from jce