gpt4 book ai didi

rust - 如何使用从变量类型推断出的长度来初始化数组?

转载 作者:行者123 更新时间:2023-11-29 08:10:29 24 4
gpt4 key购买 nike

我有一个数组的自定义类型,我想初始化该类型的变量。它看起来像这样:

type Registers = [u8; 16];

fn main() {
let mut registers: Registers;
}

我不想做类似下面的事情,因为在某些时候我可能想改变我的数组类型的大小:

let mut registers: Registers = [0; 16];

有没有办法只使用类型的名称来初始化变量?我是否被迫像上面那样指定初始化?

我的问题与 Can array lengths be inferred in Rust? 有点不同因为数组的大小应该从类型本身推断出来,而不是从值推断出数组的类型。

最佳答案

您无法推断数组的长度,因为它是一个必须在编译时求值的表达式。据我所知,“推断表达式”的概念没有意义。

I may want to change the size of my array type

你可以通过引入一个常量来避免这成为一个问题:

const N_REGISTERS: usize = 16;
type Registers = [u8; N_REGISTERS];

fn main() {
let mut registers: Registers = [0; N_REGISTERS];
}

您还可以使用数组的Default 实现,但仅限于certain sizes of array。并且仅当您需要数组元素类型的默认值时:

type Registers = [u8; 16];

fn main() {
let mut registers = Registers::default();
}

关于rust - 如何使用从变量类型推断出的长度来初始化数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49660467/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com