2016-12-07 3 views
2

Ich verstehe serde ist das bevorzugte Serialisierungswerkzeug in Rust Welt. Es scheint jedoch Funktionen zu verwenden, die im stabilen Kanal nicht vorhanden sind. Bedeutet das, dass ich serde nicht verwenden kann, während ich Rust stable release verwende? Fehle ich etwas? Zum Beispiel:Wie benutze ich serde auf stabile release von Rust

#![feature(proc_macro)] 

#[macro_use] 
extern crate serde_derive; 

extern crate serde_json; 

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

Antwort

1

Ker comment verdient, eine Antwort zu sein.

jetzt brauchen Sie noch einen Build-Skript zu verwenden: https://serde.rs/codegen-stable.html

Aber darüber hinaus suchen wir das Zeug nötig zu haben Serde Arbeit ohne Build-Skripte in Rust 1,15 zu stabilisieren. Das ist noch nicht garantiert, aber es ist sehr wahrscheinlich.

+1

Dies beantwortet die Frage nicht; es verdient, ein Kommentar zu sein. – Shepmaster

+1

Ich wollte darauf aufmerksam machen, dass ein Kommentar die Antwort –

4

Die instabilen Funktionen werden nur für die #[derive] Unterstützung benötigt. Wenn Sie Serialisierung oder Deserialisierung für neue Datentypen nicht definieren müssen, ist die Verwendung von serde mit stabilem Rust einfach.

Wenn Sie die Serialisierung für neue Typen definieren müssen, können Sie die Merkmale manuell implementieren (was nicht unbedingt einfach ist), was immer noch mit dem stabilen Rust möglich ist.

Die serde documentation umfasst auch how to do this.

+0

hat Man muss es nicht komplett manuell machen; Ein Build-Skript kann das meistens automatisch machen, aber es ist nicht so schön wie '# [lenke]'. – Shepmaster

1

Ab Rust 1.15 können Sie serde auf stabilen Rost verwenden, indem die serde_derive Kiste mit. Das bedeutet, Sie müssen nur die #![feature(proc_macro)] aus Ihrem Code entfernen und es funktioniert sofort.

#[macro_use] 
extern crate serde_derive; 

extern crate serde_json; 

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