需è¦æ‰‹åŠ¨é历åºåˆ—化的实例的æ¯ä¸ªå—段,但是åºåˆ—化需è¦æ›´å¤§ç©ºé—´
ä¸éœ€è¦ä½¿ç”¨Schema
ç±»åž‹æš‚æ—¶ä»…æ”¯æŒ String, bool, u8, u16, u32, u64, usize, i8, i16, i32, i64, isize, HasmMap, Vec, Struct
ä¸æ”¯æŒ&类型
直接定ä½è§£æžæ•°æ®ä½ç½®ï¼Œé€Ÿåº¦æ›´å¿«ï¼Œè¯¦æƒ…å‚考 examples
rust
easybuffers byteså½¢å¼ ç»“æž„ç¤ºæ„图
SPACE vtable | data_len | pivot | SPACE+data0 | SPACE+data1 | ~ |
slot0 slot1 ~
0xff | 2bytes 2bytes ~~~ | 2bytes | 1byte | 0xff+n_bytes | 0xff+n_bytes | ~ |
Pivot with offset | All data |
支æŒæ›´å¤šåŸºæœ¬ç±»åž‹çš„转化,针对Map的转化å¯ä»¥ä¼˜åŒ–
实现 当修改åºåˆ—化对象的部分å—段 å¯ä»¥åœ¨å·²ç”Ÿæˆçš„bytesä¸Šä¿®æ”¹ï¼Œæ— éœ€é‡æ–°ç”Ÿæˆ
出现ååºåˆ—化失败的情况 很有å¯èƒ½æ˜¯è®¡ç®—å移é‡çš„类型是u8 定ä½å°†å…¶æ”¹ä¸º usize 类型
对于usize å’Œ isize 类型,其实将其转为u64 å’Œ i64类型进行æ“作
对于å—段ä¸å¤šä¸ªNone值的情况,性能å¯èƒ½ä¸å¦‚protobuf
进行åºåˆ—åŒ–çš„å¯¹è±¡ï¼Œå°†æ— æ³•ç»§ç»ä½¿ç”¨
Struct 必须满足 Default trait ,HashMap keyå—段必须满足Clone且ååºåˆ—化的结果顺åºå¯èƒ½ä¼šå˜åŒ–
å¯èƒ½éœ€è¦å¯¹å¸¸ç”¨ç±»åž‹è¿›è¡Œå°è£…(æžå¤§ç¨‹åº¦çš„é™ä½Žäº†åºåˆ—化结果的大å°)
rust
Vec<bool> => VecBool ã€Vec<u16> => VecU16 ...
2.0ç‰ˆæœ¬æ·»åŠ äº† 最常用的 VecU8
æ¬¢è¿Žä¸Žæˆ‘äº¤æµ 337990443@qq.com
```rust
extern crate easybuffers;
use std::collections::HashMap; use easybuffers::helper::{ Table, HyperHelper };
struct TestMap {
author: String,
map: HashMap