rust - 无法制作 Serde 序列化工作的基本示例
问题描述
Serde 文档说:
所有这些都可以使用开箱即用的 Serde 进行序列化。
serde_json 仅用于示例,一般不需要。
这正是我所需要的,将结构基本序列化为一些基本的二进制格式。我不需要 JSON 格式,我想保持简单,以便能够将结构存储在文件中或将其发送到网络。该文档不清楚如何使用 serde 进行基本(二进制或默认)序列化,它只显示了 JSON 的示例,但这不是我想要的。我也不想实现自己的serialize
方法,我想使用 Serde 提供的默认方法。
这是我的例子,那么我该如何让它工作呢?
use serde::{Serialize, Deserialize,Serializer};
#[derive(Serialize, Deserialize, Debug)]
struct Point {
x: i32,
y: i32,
}
fn main() {
let point = Point { x: 1, y: 2 };
//let serialized = serde::serialize(&point).unwrap(); // <-- doesnt work!
//let serialized = Serializer::serialize(&point); // <-- doesnt work!
//let serialized = point.serialize(Serializer); // <-- doesn't work!
println!("data = {:?}", serialized);
}
这是我的依赖行:
[dependencies]
serde = { version = "1.0", features = ["derive"] }
解决方案
如评论中所述,没有提供“默认”格式。
您必须选择所需的二进制格式并将其作为附加依赖项包含在内,就像使用serde_json
.
在https://serde.rs/#data-formats有一个格式列表。其中serde_json
是托管在https://github.com/serde-rs下的唯一包,所有二进制格式都是“第三方”。将它与按最近下载排序的标记为“serde”的 crate 列表交叉引用,CBOR crate 似乎很受欢迎。
推荐阅读
- azure - 如何批量下载 Azure Artifacts 包?
- xml - 使用 VBA 宏识别项目符号列表的样式类型
- java - 无法将 MySQL 数据库与 Eclipse Neon 连接
- verilog - 如何删除自动生成的 YOSYS 评论?
- node.js - 命中 Firebase 功能时收到 414
- c - 为什么在 TF2 中不推荐使用 convert_variables_to_constants()?
- c++ - 重载解析在模板实例化点之后查找函数
- hdfs - 当我使用水槽将文件发布到 HDFS 实时显示时连接被拒绝
- html - Flexbox wrap 不会增加父级的宽度?
- python - 熊猫数据框中并发呼叫分数之间的差异