3

我知道 serde 是 Rust 世界中首选的序列化工具。但是,它似乎正在使用稳定频道中不存在的功能。这是否意味着我在使用 Rust 稳定版本时不能使用 serde?我错过了什么吗?例如:

#![feature(proc_macro)]

#[macro_use]
extern crate serde_derive;

extern crate serde_json;

#[derive(Serialize, Deserialize, Debug)]
struct Point {
    x: i32,
    y: i32,
}
4

3 回答 3

5

使用的不稳定功能仅用于#[derive]支持。因此,如果您不需要为新数据类型定义序列化或反序列化,则使用带有稳定 Rust 的 serde 很容易。

如果您确实需要为新类型定义序列化,您可以手动实现特征(这不一定容易),这仍然可以使用稳定的 Rust。

serde文档还介绍了如何执行此操作。

于 2016-12-07T21:52:06.187 回答
1

从 Rust 1.15 开始,您可以使用crateserde在稳定的 Rust 上使用。serde_derive这意味着您只需#![feature(proc_macro)]要从代码中删除它,它就可以开箱即用。

#[macro_use]
extern crate serde_derive;

extern crate serde_json;

#[derive(Serialize, Deserialize, Debug)]
struct Point {
    x: i32,
    y: i32,
}
于 2017-03-09T10:11:27.063 回答
1

Ker 的评论值得回答。

现在您仍然需要使用构建脚本:https ://serde.rs/codegen-stable.html

但此外,我们正在寻求稳定必要的东西,以使 Serde 在 Rust 1.15 中无需构建脚本即可工作。这还不能保证,但很有可能。

于 2016-12-07T19:37:14.783 回答