我想将特征中定义的常量关联起来,并在通用函数中使用它。
trait My {
const C: usize;
}
fn f<T>() -> [i32; T::C] where T: My {
unimplemented!();
}
但是锈不能解决这个问题
还有其他方法可以从泛型函数中的类型获取常量吗?
答案 0 :(得分:2)
您可以使用generic_array条板箱-不允许使用固定大小的Rust数组,但是可以将数组长度表示为关联的类型
trait My {
type C: ArrayLength<i32>;
}
然后使用特质绑定对其进行引用
fn f<T>() -> GenericArray<i32, T::C> where T: My {
...
}
然后您还可以使用to_usize从类型中获取常量值。