2016-12-07 45 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, 
}