我理解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,
}
答案 0 :(得分:5)
仅在#[derive]
支持时才需要使用的不稳定功能。因此,如果您不需要为新数据类型定义序列化或反序列化,那么使用具有稳定Rust的serde很容易。
如果确实需要为新类型定义序列化,可以手动实现特征(这不一定容易),这仍然可以使用稳定的Rust。
答案 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,
}