1 个稳定版本
使用旧的 Rust 2015
1.0.0 | 2017年7月28日 |
---|
#13 in #标注
3KB
rust-typed
lib.rs
:
typed
这是一个用于帮助 rustc 的类型标注。这对于代码生成很有用。
用法
没有 ufcs,这不起作用,因为它是不明确的。
trait ChangeWatcher<T> {
fn is_changed(&self) -> bool;
}
struct DbConfig;
struct AppConfig;
struct Context;
impl ChangeWatcher<DbConfig> for Context {
fn is_changed(&self) -> bool { false }
}
impl ChangeWatcher<AppConfig> for Context {
fn is_changed(&self) -> bool { false }
}
fn some<C: ChangeWatcher<DbConfig> + ChangeWatcher<AppConfig>>(c: C) {
if <C as ChangeWatcher<DbConfig>>::is_changed(&c) {
}
}
但这是有效的。
extern crate typed;
use typed::{Type, type_of};
trait ChangeWatcher<T> {
fn is_changed(&self, _: Type<T>) -> bool;
}
struct DbConfig;
struct AppConfig;
struct Context;
impl ChangeWatcher<DbConfig> for Context {
fn is_changed(&self, _: Type<DbConfig>) -> bool { false }
}
impl ChangeWatcher<AppConfig> for Context {
fn is_changed(&self, _: Type<AppConfig>) -> bool { false }
}
fn some<C: ChangeWatcher<DbConfig> + ChangeWatcher<AppConfig>>(c: C) {
if c.is_changed(type_of::<DbConfig>()) {
}
}