This question already has answers here:
Is there any way to create a type alias for multiple traits?
(2个答案)
4年前关闭。
是否可以使用指定的关联类型创建特征别名?我正在使用来自类似问题Type alias for multiple traits的方法
但是,它无法编译并出现以下错误:
游戏围栏链接:http://is.gd/LE4h6a
哪种方案更适合您,完全取决于您。
(2个答案)
4年前关闭。
是否可以使用指定的关联类型创建特征别名?我正在使用来自类似问题Type alias for multiple traits的方法
trait Trait {
type Item;
}
fn print<T>(value: T) where T: Trait<Item=char> {
}
trait Alias: Trait {}
impl<T: Trait<Item=char>> Alias for T {}
fn print_alias<T: Alias>(value: T) {
print(value)
}
fn main() {
}
但是,它无法编译并出现以下错误:
<anon>:12:5: 12:10 error: type mismatch resolving `<T as Trait>::Item == char`:
expected associated type,
found char [E0271]
<anon>:12 print(value)
^~~~~
<anon>:12:5: 12:10 note: required by `print`
<anon>:12 print(value)
^~~~~
error: aborting due to previous error
游戏围栏链接:http://is.gd/LE4h6a
最佳答案
@Shepmaster的解决方案可以在本地解决问题;但您每次都必须指定where T: Alias<Item=char>
。另外,您可以通过要求所有Alias
实现Trait<Item=char>
来全局解决此问题:
trait Alias: Trait<Item=char> {}
impl<T: Trait<Item=char>> Alias for T {}
哪种方案更适合您,完全取决于您。
关于rust - 具有关联类型的别名特征,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30424100/
10-12 01:40