6 个版本 (破坏性更新)
0.5.0 | 2020 年 8 月 31 日 |
---|---|
0.4.0 | 2020 年 8 月 31 日 |
0.3.0 | 2019 年 3 月 15 日 |
0.2.0 | 2018 年 12 月 20 日 |
0.1.0 | 2018 年 4 月 6 日 |
#1888 在 Rust 模式
1,547 每月下载量
在 k8s-ares 中使用
10KB
203 行
特性枚举
用于具有相同特性的类型的枚举包装器
trait_enum
宏生成一个管理多个对象的 enum
这些对象预期具有相同的特性实现
之后,枚举将具有一个 std::ops::Deref
实现返回对该特性的引用。
#[macro_use]
extern crate trait_enum;
pub trait CommonTrait {
fn test(&self) -> u32;
}
pub struct InnerOne;
impl CommonTrait for InnerOne {
fn test(&self) -> u32 {
1
}
}
pub struct InnerTwo;
impl CommonTrait for InnerTwo {
fn test(&self) -> u32 {
2
}
}
trait_enum!{
pub enum Combined: CommonTrait {
InnerOne,
InnerTwo,
}
}
fn main() {
use std::ops::Deref;
let combined = Combined::InnerOne(InnerOne);
let deref: &dyn CommonTrait = combined.deref();
assert_eq!(deref.test(), 1);
let combined = Combined::InnerTwo(InnerTwo);
let deref: &dyn CommonTrait = combined.deref();
assert_eq!(deref.test(), 2);
}