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

标签 rust serde

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/

相关文章:

sql-server - Tiberius simple_query 根据文档编译时错误

rust - 为什么没有为明确实现的类型实现特征?

rust - 如何修改使用 serde 序列化的 Result<T,E> 的 JSON 输出?

rust - 使用 rust serde 反序列化请求和响应

rust - 我可以使用自己的序列化结构在 Rocket 中渲染模板吗?

rust - 使用 Serde 反序列化对象时,有没有办法省略包装器/根对象?

rust - 从Vec <u32>进行序列化和反序列化

rust - 在 rust 数组和 vec 上使用 `for` 循环

rust - 闭包是 `FnOnce`,因为它将变量 `________` 移出其环境

rust - Rust 中的非零大小值是什么?