rust 任意类型的序列化问题

在java,go,Typescript等类型语言中,可以使用任意类型,在rust中,如何对于包含字段类型为值为任意类型的字典,支持serde序列化,可以参考以下代码:

use serde::{Deserialize, Serialize};
use std::collections::BTreeMap;

#[derive(Clone, Debug, Default, Serialize, Deserialize)]
#[serde(rename_all = "UPPERCASE")]
pub enum NodeState {
    Starting,
    #[default]
    Up,
    Suspicious,
    Down,
    Isolation,
}

#[derive(Clone, Debug, Default, Serialize, Deserialize)]
pub struct Member {
    pub ip: String,
    pub port: i32,
    pub state: NodeState,
    pub extend_info: BTreeMap<String, serde_json::Value>,
    pub address: String,
    pub fail_access_cnt: i32,
}

impl Member {
    pub fn new() -> Self {
        let mut m = BTreeMap::<String, serde_json::Value>::new();

        m.insert(
            String::from("site"),
            serde_json::Value::String(
                std::env::var("nacos.core.member.meta.site").unwrap_or(String::from("unknow")),
            ),
        );

        Self {
            ip: String::from(""),
            port: -1,
            state: NodeState::Up,
            address: String::from(""),
            extend_info: m,
            fail_access_cnt: 0,
        }
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容