1 个不稳定版本

0.1.0 2024年6月24日

#372 in 值格式化

MIT/Apache

14KB
120

serenum

示例用法

源代码

#[derive(SerEnum)]
pub enum Order {
    #[serenum(text = "full")]
    Full,
    #[serenum(text = "short")]
    Short,
}
assert_eq!(Order::Full.text(), "full");
assert_eq!(Order::Short.text(), "short");

展开

impl ::serde::Serialize for Order {
    fn serialize<S>(&self, serializer: S) -> ::core::result::Result<S::Ok, S::Error>
    where
        S: ::serde::Serializer,
    {
        serializer.serialize_str(self.text())
    }
}
impl<'de> ::serde::Deserialize<'de> for Order {
    fn deserialize<D>(deserializer: D) -> ::core::result::Result<Self, D::Error>
    where
        D: ::serde::Deserializer<'de>,
    {
        #[allow(non_camel_case_types)]
        #[derive(::serde::Deserialize)]
        enum __impl_Order {
            #[serde(rename = "full")]
            Full,
            #[serde(rename = "short")]
            Short,
        }
        let result = <__impl_Order as ::serde::Deserialize<'de>>::deserialize(deserializer)?;
        Ok(match result {
            __impl_Order::Full => Order::Full,
            __impl_Order::Short => Order::Short,
        })
    }
}
impl Order {
    pub const FULL: &'static str = "full";
    pub const SHORT: &'static str = "short";
    pub fn from_text(text: &impl ::core::convert::AsRef<str>) -> ::core::option::Option<Self> {
        match <_ as ::core::convert::AsRef<str>>::as_ref(text) {
            Self::FULL => ::core::option::Option::Some(Self::Full),
            Self::SHORT => ::core::option::Option::Some(Self::Short),
            _ => ::core::option::Option::None,
        }
    }
    pub const fn text(&self) -> &str {
        match self {
            Self::Full => Self::FULL,
            Self::Short => Self::SHORT,
        }
    }
}

特性

名称 默认或不 描述
serde 默认 生成 serde::Serializeserde::Deserialize 实现。

宏配置

枚举级别

名称 语法 是否必需 描述
来自 来自= "some_function_name" 默认: from_text 生成的字符串解析器的名称。
= "some_function_name" 默认: text 生成的文本获取器的名称。

变体级别

名称 语法 是否必需 描述
文本 文本= "variant_repr" 必需 变体的字符串表示。
const_name const_name= "CONST_NAME" 默认:变体名称的大写蛇形命名法。 变体的关联常量项的名称。

依赖项

~1.6–2.2MB
~42K SLoC