2016-12-07 7 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

それに加えて、我々は錆1.15でビルドスクリプトなしSerde仕事を持っていることが必要なものを安定させるために探しています。それはまだ保証されていませんが、非常に可能性があります。

+1

これは質問に答えません。それはコメントに値する。 – Shepmaster

+1

は、私がコメントあなたは完全にそれを手動で行う必要はありません –

4

使用される不安定な機能は、#[derive]のサポートにのみ必要です。したがって、新しいデータ型のシリアル化または逆シリアル化を定義する必要がない場合、安定したRustを持つserdeを使用するのは簡単です。あなたは新しいタイプのためのシリアライズを定義する必要がある場合

することは、あなたは安定した錆を使用して、まだ可能である、(必ずしも容易ではないもの)を手動特性を実現することができます。

serde documentationはまた、あなたがserde_deriveクレートを使用することにより、安定錆にserdeを使用することができ、錆1.15のとおりhow to do this.

+0

答えを持っているという事実に注意を喚起したいです。ビルドスクリプトはほとんどの場合それを自動的に行うことができますが、 '#[derive]'と同じくらい美しいものではありません。 – Shepmaster

1

をカバーしています。つまり、コードから#![feature(proc_macro)]を削除するだけで、すぐに使用できます。

#[macro_use] 
extern crate serde_derive; 

extern crate serde_json; 

#[derive(Serialize, Deserialize, Debug)] 
struct Point { 
    x: i32, 
    y: i32, 
} 
関連する問題