2 个版本
使用旧的 Rust 2015
0.0.1 | 2014年11月11日 |
---|---|
0.0.0 | 2014年11月11日 |
#84 in #defines
4KB
50 行代码(不包括注释)
可转换
检查过的、类型安全的、易于使用的类型运行时转换。
概述
定义了 Convertible<From>
特性,该特性定义了从 &From
到 Option<Self>
的 convert
方法。
此外,它定义了通用的混合特性 Raw
,为所有类型添加了 to
方法,以便于这些转换的易用性。
这可以用于实现基于原始表示的扩展枚举,变体可以从中创建
示例
use convertible::{Convertible, Raw};
struct Raw {
name: &'static str
}
#[deriving(PartialEq, Show)]
enum NotRaw {
First, Second, Third
}
impl Convertible<Raw> for NotRaw {
fn convert(raw: &Raw) -> Option<NotRaw> {
match raw.name {
"first" => Some(First),
"second" => Some(Second),
"third" => Some(Third),
_ => None
}
}
}
#[test] fn test_conversion() {
let first = Raw { name: "first" };
let second = Raw { name: "second" };
let malformed = Raw { name: "malformed" };
assert_eq!(first.to::<NotRaw>(), Some(First));
assert_eq!(second.to::<NotRaw>(), Some(Second));
assert_eq!(malformed.to::<NotRaw>(), None);
}