如何使用编译时已知大小的泛型(
Sized
)作为基于其大小的结构数组长度
我有以下错误:
error: generic parameters may not be used in const operations
--> src/lib.rs:4:43
|
4 | arr: [Key; 1024 / std::mem::size_of::<Key>()]
| ^^^ cannot perform const operation using `Key`
|
= note: type parameters may not be used in const expressions
对于以下代码
type SomeKey = u64;
// This does not work
struct NotWorking<Key: Sized> {
arr: [Key; 1024 / std::mem::size_of::<Key>()]
}
struct Working {
arr: [SomeKey; 1024 / std::mem::size_of::<SomeKey>()]
}
您目前无法稳定,它需要
#![feature(generic_const_exprs)]
,因此每晚,它目前还需要一个 where 子句来约束泛型,尽管 generic_const_exprs
仍然不完整,这可能会在实现过程中消失。
#![feature(generic_const_exprs)]
type SomeKey = u64;
struct NotWorking<Key: Sized> where [(); 1024 / std::mem::size_of::<Key>()]: {
arr: [Key; 1024 / std::mem::size_of::<Key>()]
}