【发布时间】:2016-10-18 16:24:30
【问题描述】:
这段代码:
pub type Foo<T: Read> = fn(bar: T);
yields error E0122(在较新版本的 Rust 中,这只是一个警告):
尝试将通用约束添加到类型别名。这 约束被完全忽略。为了向后兼容,Rust 仍然允许这样做并发出警告。考虑下面的例子:
trait Foo {} type MyType<R: Foo> = (R, ()); fn main() { let t: MyType<u32>; }我们可以声明
MyType<u32>类型的变量,尽管事实上u32没有实现Foo。因此,应避免使用 与类型别名一致的通用约束。
是否可以创建包含函数指针特征要求的类型别名?显然,编译器告诉我没有类型,但不知道是否还有其他我没有想到的函数选项。
【问题讨论】:
-
这似乎不可能,正如错误所说。尝试
Fn(T)并没有让我有所收获。
标签: generics rust function-pointers traits type-alias