什么相当于Serde中的Java瞬态?

问题描述 投票:6回答:1

我感兴趣的是使用像Java的transient这样的关键字来生成一个不自动序列化的变量(例如,通过Serde),但是在Rust中。我需要这个来存储密码。当然,我可以在序列化到磁盘时手动清除数据,但我想知道是否有更好,更自动的选项。

serialization rust serde
1个回答
10
投票

您可以使用#[serde(skip)]属性:

use serde::{Deserialize, Serialize}; // 1.0.88

#[derive(Deserialize, Serialize)]
struct MyStruct {
    field1: i32, // this will be (de)serialized
    #[serde(skip)]
    field2: i32, // this will be skipped
}

如果类型需要反序列化,那么伴随#[serde(skip)]#[serde(default)](或#[serde(default = "fn_name")])属性是一个好主意。 Serde反序列化跳过的字段,好像隐含地添加了#[serde(default)]一样,但是如果你明确指出这个值来自哪里,那么阅读代码的人会更清楚。

看到:

© www.soinside.com 2019 - 2024. All rights reserved.