3 个版本

使用旧的 Rust 2015

0.0.3 2016 年 4 月 7 日
0.0.2 2016 年 4 月 7 日
0.0.1 2016 年 4 月 6 日

1851Rust 模式

每月下载 31

MIT 许可证

23KB
473

specialize-rs

travis-badge release-badge docs-badge license-badge

specialize 是一个用于处理类型专业化的实验性 Rust 库。

文档

请参阅提供的所有宏和类型的 文档,以及更详细的语法和信息。

约束

使用 constrain!() 宏可以为现有的泛型参数添加额外的类型限制。例如,假设您想要打印类型的调试表示,而不将其添加到您的泛型限制中

#[macro_use]
extern crate specialize;

fn some_func<T: SomeTrait>(t: &T) {
    if let Some(debug) = constrain!(ref [t: Debug] = ()) {
        println!("some_func({:?})", debug);
    }
    t.something();
}

它还可以用作 Any 的替代品,使泛型类型再次成为其匹配的具体类型。

专业化

specialize! { } 宏允许进行更高级的类型匹配,但由于其语法和外部函数的实现,它更为繁琐。有关详细信息,请参阅文档。

无运行时依赖