我有一个标记特征,它有一个关联的常量:
trait Trait {
const N: usize;
}
我有一个由特征限定的泛型类型.我希望能够在声明中使用N
:
struct S<T: Trait> {
field: [f64; T::N],
}
我的期望是,对于任何指定N
的Trait
实现,我可以拥有一个S
,其中包含相同数量的浮点array.相反,我得到以下编译器错误:
error: generic parameters may not be used in const operations
--> src/main.rs:8:18
|
8 | field: [f64; T::N],
| ^^^^ cannot perform const operation using `T`
|
= note: type parameters may not be used in const expressions
error[E0392]: parameter `T` is never used
--> src/main.rs:7:10
|
7 | struct S<T: Trait> {
| ^ unused parameter
|
= help: consider removing `T`, referring to it in a field, or using a marker such as `PhantomData`
For more information about this error, try `rustc --explain E0392`.
虽然我理解错误本身,但我不理解它的原因或如何绕过它.