Serde 文档说:
All of these can be serialized using Serde out of the box.
serde_json is just for the example, not required in general.
这正是我所需要的,将结构基本序列化为某种基本二进制格式。我不需要 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);
}
Playground :https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=b57a77399280f19664bb004201319b32
这是我的依赖行:
[dependencies]
serde = { version = "1.0", features = ["derive"] }
最佳答案
如评论中所述,没有提供“默认”格式。
您必须选择所需的二进制格式并将其作为附加依赖项包含在内,就像使用 serde_json
一样。
在 https://serde.rs/#data-formats 处有一个格式列表.在这些 serde_json
中,唯一一个托管在 https://github.com/serde-rs 下的包,所有二进制格式都是“第三方”。用 the list of crates tagged "serde" sorted by recent downloads 交叉引用它, CBOR crate 似乎很受欢迎。
关于rust - 无法使 Serde Serialize 工作的基本示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56727627/