如何在Rust的稳定释放上使用serde

时间:2016-12-07 11:47:15

标签: rust serde

我理解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,
}

3 个答案:

答案 0 :(得分:5)

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

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

serde documentation还涵盖how to do this.

答案 1 :(得分:1)

Ker' comment值得回答。

  

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

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

答案 2 :(得分:1)

从Rust 1.15开始,您可以使用serde包来对稳定的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,
}