【发布时间】:2020-11-24 15:10:17
【问题描述】:
现有语法允许我们为关联类型编写默认值:
trait Foo {
type Bar = i32;
}
我想要类似 C++ 的东西:
trait Foo {
typedef int Bar;
}
这不是有效的 Rust 代码,但试图表明我的意图:
trait Foo<T> {
trait Trait = Into<T> + /* 10 other traits dependent on T */;
fn foo(x: Type) -> Trait;
}
【问题讨论】:
-
而为什么你想要这个?你会如何使用它?
-
第二个 sn-p 没有多大意义,即使是伪代码。可以将多个特征边界添加到关联类型,但不将约束的总和本身视为一种类型。也许您对this 感兴趣?
-
您的示例用法对我来说没有意义。您有一个通用的 type
T,然后您尝试将其视为特征,因为您向其添加了其他特征 (+ Clone)。这两个概念不兼容。 -
创建一个继承自之前特征的新特征可能会解决这里真正的问题。
-
为什么人们不赞成这个问题 — 我没有反对这个问题,但是看看自您发布以来在短时间内所做的 cmets 和编辑的数量.这个问题的原始形式非常不清楚。人们大概读过它,看到它不清楚,投反对票,然后继续他们的一天。为避免此类投反对票,请确保问题从一开始就非常清楚。
标签: rust traits type-alias