【发布时间】:2019-06-22 19:15:57
【问题描述】:
我正在尝试将一个特征中定义的关联 const 分配给另一个不能按预期工作的特征。这是一个包含 3 个特征和一个结构的最小示例:
trait A {
const X: i32 = 1;
}
struct S;
impl A for S {}
trait B {
const Y: i32 = A::X;
}
trait C {
const Y: i32 = S::X;
}
fn main() {}
对应的编译错误是:
error[E0283]: type annotations required: cannot resolve `_: A`
--> src/main.rs:10:20
|
10 | const Y: i32 = A::X;
| ^^^^
|
note: required by `A::X`
--> src/main.rs:2:5
|
2 | const X: i32 = 1;
| ^^^^^^^^^^^^^^^^^
E0283 的解释告诉我代码揭示了什么:我可以从具体类型分配,但不能从特征本身分配。但是在E0283 示例使用未定义函数的地方,我有一个已经定义的值。为什么会这样?如何绕过?
【问题讨论】:
标签: rust