无法使 Serde Serialize 的基本示例工作

Nul*_*lik 3 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);
}
Run Code Online (Sandbox Code Playgroud)

游乐场:https://play.rust-lang.org/?version=stable&mode =debug&edition=2018&gist=b57a77399280f19664bb004201319b32

这是我的依赖行:

[dependencies]
serde = { version = "1.0", features = ["derive"] }
Run Code Online (Sandbox Code Playgroud)

Nic*_*lay 5

正如评论中所指出的,没有提供“默认”格式。

您必须选择所需的二进制格式并将其作为附加依赖项包含在内,就像使用serde_json.

https://serde.rs/#data-formats上有格式列表。其中serde_json唯一的包托管在https://github.com/serde-rs下,所有二进制格式都是“第三方”。将其与按最近下载排序的标记为“serde”的板条箱列表进行交叉引用,CBOR板条箱似乎很受欢迎。