2 个版本

使用旧的 Rust 2015

0.0.1 2014年11月11日
0.0.0 2014年11月11日

#84 in #defines

4KB
50 行代码(不包括注释)

可转换

检查过的、类型安全的、易于使用的类型运行时转换。

概述

定义了 Convertible<From> 特性,该特性定义了从 &FromOption<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);
}

无运行时依赖