2016-12-07 11 views
2

Я понимаю, что serde является предпочтительным инструментом сериализации в мире Rust. Однако, похоже, это функции, которые не существуют в стабильном канале. Означает ли это, что я не могу использовать serde при использовании стабильной версии Rust? Я что-то упускаю? Например:Как использовать 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's comment заслуживает ответа.

сейчас вам все еще нужно использовать сценарий сборки: https://serde.rs/codegen-stable.html

Но кроме того, мы ищем для стабилизации вещи необходимо иметь Serde работу без сборки скриптов в Русте 1.15. Это еще не гарантировано, но это очень вероятно.

+1

Это не отвечает на вопрос; он заслуживает того, чтобы быть комментарием. – Shepmaster

+1

Я хотел обратить внимание на то, что комментарий имеет ответ –

4

Неиспользованные функции используются только для поддержки #[derive]. Поэтому, если вам не нужно определять сериализацию или десериализацию для новых типов данных, использование serde со стабильной Rust легко.

Если вам нужно определить сериализацию для новых типов, вы можете реализовать черты вручную (что не всегда легко), что по-прежнему возможно при использовании стабильной ржавчины.

serde documentation также охватывает how to do this.

+0

Вам не нужно делать это полностью вручную; скрипт сборки может делать это в основном автоматически, но это не так красиво, как '# [вывод]'. – Shepmaster

1

В Русте 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, 
}