【问题标题】:How to use serde on stable release of Rust如何在 Rust 的稳定版本中使用 serde
【发布时间】:2016-12-07 11:47:15
【问题描述】:

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

#![feature(proc_macro)]

#[macro_use]
extern crate serde_derive;

extern crate serde_json;

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

【问题讨论】:

    标签: rust serde


    【解决方案1】:

    所使用的不稳定功能仅用于#[derive] 支持。因此,如果您不需要为新的数据类型定义序列化或反序列化,那么将 serde 与稳定的 Rust 一起使用是很容易的。

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

    serde documentation 也涵盖了how to do this.

    【讨论】:

    • 您不必完全手动完成;构建脚本几乎可以自动完成,但不如 #[derive] 漂亮。
    【解决方案2】:

    Ker 的comment 值得回答。

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

    但此外,我们正在寻求稳定必要的东西,以使 Serde 在 Rust 1.15 中无需构建脚本即可工作。这还不能保证,但很有可能。

    【讨论】:

    • 这不能回答问题;值得评论。
    • 我想提醒大家注意评论有答案
    【解决方案3】:

    从 Rust 1.15 开始,您可以通过使用 serde_derive crate 在稳定的 Rust 上使用 serde。这意味着您只需从代码中删除 #![feature(proc_macro)] 即可使用。

    #[macro_use]
    extern crate serde_derive;
    
    extern crate serde_json;
    
    #[derive(Serialize, Deserialize, Debug)]
    struct Point {
        x: i32,
        y: i32,
    }
    

    【讨论】:

      猜你喜欢
      • 2021-08-31
      • 1970-01-01
      • 1970-01-01
      • 2022-12-11
      • 1970-01-01
      • 1970-01-01
      • 2015-07-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多