Dojo
最新
最佳
搜索
订阅
解道Jdon
架构设计
领域驱动
DDD介绍
DDD专辑
战略建模
领域语言UL
领域事件
商业分析
工作流BPM
规则引擎
架构师观点
数据工程
产品经理
系统思维
微服务
微服务介绍
微服务专辑
模块化设计
SOA
API设计
clean架构
SpringBoot
分布式事务
事件溯源
Kafka消息
Kubernetes
DevOps
编程设计
GoF设计模式
模式专辑
面向对象
函数式编程
编程语言比较
编程工具比较
形式逻辑
前端编程
Reactive编程
Jdon框架
Rust语言
人工智能
Web3
模因梗
幽默梗
程序员吐槽
面试技巧
Java入门
数字化转型
认知偏差
道德经
更多话题
如何将Rust的“struct”转换为数据流?
22-10-06
banq
当且仅当原始结构派生Serialize和Deserialize特征时,可以使用
bincode
将它们序列化为 binary-encoded Vec<u8>。
在这里,我用一个元组结构MyStruct包裹了原始结构StructFromAnotherTool,并使用hex将结果从Vec<u8>编码和解码为十六进制字符串,这样我就可以很容易地将十六进制字符串表示法存储在数据库中。
请注意,这些结构在最后派生出PartialEq和Debug,然后使用断言测试。
use serde::{Deserialize, Serialize};
use hex;
#[derive(Serialize, Deserialize, PartialEq, Debug)]
struct StructFromOtherTool {
x: f32,
y: f32,
}
#[derive(Serialize, Deserialize, PartialEq, Debug)]
struct MyStruct(StructFromOtherTool);
fn main() {
let mystruct = MyStruct(SomeStruct { x: 1.3, y: 5.2 });
let encoded: Vec<u8> = bincode::serialize(&mystruct).unwrap();
// 这个十六进制的字符串表示可以存储在数据库中。
let s = hex::encode(encoded.clone());
println!("Hex encoded struct: {}", s);
// 然后我们对十六进制字符串进行解码,并使用bincode将其反序列化为一个MyStruct实体。
let v = hex::decode(s).unwrap();
let decoded = bincode::deserialize(&v[..]).unwrap();
assert_eq!(mystruct, decoded);
}
stream流处理模式
RUST语言