Rust 如何使用默认值初始化通用常量长度的数组?
我想在结构A中初始化数组,但数组的长度是常量泛型。虽然我可以确保长度始终小于32,但似乎当前的编译器不支持这一点。此外,我还尝试了Rust 如何使用默认值初始化通用常量长度的数组?,rust,Rust,我想在结构A中初始化数组,但数组的长度是常量泛型。虽然我可以确保长度始终小于32,但似乎当前的编译器不支持这一点。此外,我还尝试了#![feature(const_evaluable_checked)],该功能正常工作,但此功能已从最新的编译器中删除。你有什么想法吗 #![特征(const_泛型)] 结构B 哪里 E:复制+默认值, { f:E, } 结构A 哪里 E:复制+默认值, { 数组:[选项;项数量], } 暗示 哪里 E:复制+默认值, { fn new()->Self{ 自我{ 数
#![feature(const_evaluable_checked)]
,该功能正常工作,但此功能已从最新的编译器中删除。你有什么想法吗
#![特征(const_泛型)]
结构B
哪里
E:复制+默认值,
{
f:E,
}
结构A
哪里
E:复制+默认值,
{
数组:[选项;项数量],
}
暗示
哪里
E:复制+默认值,
{
fn new()->Self{
自我{
数组:Default::Default(),
}
}
}
fn main(){
设aa=A:::new();
}
另外,我不知道我是否可以使用,因为B结构也需要E泛型。由于常量泛型仍然非常新,并且
默认值
非常旧,所以它只对长度小于32的数组实现。处理此问题的最简单方法是只添加一个边界,强制数组实现Default
,这样以后,一旦Default
对所有长度的数组都实现,代码仍然可以工作:
impl A
哪里
E:复制+默认值,
//要求数组实现默认值
[选项;项目编号]:默认值,
{
fn new()->Self{
自我{
数组:Default::Default(),
}
}
}
由于const泛型仍然是非常新的,而且
Default
非常旧,因此它只在长度小于32的数组中实现。处理此问题的最简单方法是只添加一个边界,强制数组实现Default
,这样以后,一旦Default
对所有长度的数组都实现,代码仍然可以工作:
impl A
哪里
E:复制+默认值,
//要求数组实现默认值
[选项;项目编号]:默认值,
{
fn new()->Self{
自我{
数组:Default::Default(),
}
}
}