4个稳定版本
1.2.0 | 2023年8月9日 |
---|---|
1.1.0 | 2022年9月14日 |
1.0.1 | 2022年9月13日 |
#41 在 无标准库
8,387 每月下载量
用于 31 个包 (9 直接)
8KB
as_variant
一个简单的Rust宏,用于将具有newtype变体的枚举转换为Option
。
基本示例
use std::ops::Deref;
use as_variant::as_variant;
enum Value {
Integer(i64),
String(String),
Array(Vec<Value>),
}
impl Value {
pub fn as_integer(&self) -> Option<i64> {
as_variant!(self, Self::Integer).copied()
}
pub fn as_str(&self) -> Option<&str> {
as_variant!(self, Self::String).map(Deref::deref)
}
pub fn as_array(&self) -> Option<&[Value]> {
as_variant!(self, Self::Array).map(Deref::deref)
}
pub fn into_string(self) -> Option<String> {
as_variant!(self, Self::String)
}
pub fn into_array(self) -> Option<Vec<Value>> {
as_variant!(self, Self::Array)
}
}
lib.rs
:
提供将具有newtype变体的枚举转换为Option
的简单宏。