小编Pet*_*rth的帖子

当类型仅为 Serialize 时,使用 serde 获取类型名称为 String

我需要一个返回类型名称的函数,我有这个使用 serde 工作的函数,但现在我需要一个不需要类型的替代版本,Deserialize以便我可以在具有借用成员的结构上使用它。

我怎样才能重写这个函数,以便它在类型为 时工作Serialize,但在类型不工作时工作Deserialize

#[macro_use]
extern crate serde;

#[macro_use]
extern crate serde_derive;

use serde::de::{self, Deserialize, Deserializer, Visitor};
use std::fmt::{self, Display};

fn type_name<'de, D: Deserialize<'de>>() -> &'static str {
    #[derive(Debug)]
    struct NoError;
    impl std::error::Error for NoError {
        fn description(&self) -> &str {
            "no error"
        }
    }

    impl Display for NoError {
        fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
            write!(f, "NoError")
        }
    }

    impl de::Error for NoError {
        fn custom<T: Display>(_msg: T) -> Self …
Run Code Online (Sandbox Code Playgroud)

rust serde

5
推荐指数
1
解决办法
2190
查看次数

标签 统计

rust ×1

serde ×1