我需要一个返回类型名称的函数,我有这个使用 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)