2016-12-07 90 views
2

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

#![feature(proc_macro)] 

#[macro_use] 
extern crate serde_derive; 

extern crate serde_json; 

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

回答

1

Ker的comment不愧为答案。

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

但除此之外,我们正在寻找稳定所必需的东西,有没有生成脚本SERDE工作鲁斯特1.15。这还不能保证,但很可能。

+1

这不回答问题;它值得成为一个评论。 – Shepmaster

+1

我想提醒注意事实,即评论有答案 –

4

所使用的不稳定功能只需要支持#[derive]。所以,如果你不需要为新数据类型定义序列化或反序列化,那么使用具有稳定Rust的serde很容易。

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

serde documentation还包括how to do this.

+0

您不必手动完成;构建脚本可以主要自动完成,但不像'#[derive]'那么漂亮。 – Shepmaster

1

铁锈1.15,您可以通过使用serde_derive箱子上稳定的锈使用serde。这意味着你只需要从你的代码中删除#![feature(proc_macro)],它可以直接使用。

#[macro_use] 
extern crate serde_derive; 

extern crate serde_json; 

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