arrays - 在 Rust 中初始化字符串数组

标签 arrays rust

我想创建一个固定大小的可变数组。这些元素稍后在程序中初始化。如何初始化数组?

我试过这样做:

let mut array: [String; 126] = [String::new(); 126];

它给了我错误:

the trait bound 'std::string::String: std::marker::Copy' is not satisfied
the trait 'std::marker::Copy' is not implemented for 'std::string::String'

如何用新字符串初始化数组?

最佳答案

目前,数组的初始化还是有点古怪。 特别是,Default 在这里会很有用,但它只适用于最多 32 个数组:

let array: [String; 32] = Default::default();

超过这个数的任何数字都将无法编译,因为虽然 Rust 1.47 现在实现了数组类型的通用大小的一些特征,但 Default 还不是其中之一。 Default 的这 32 个实现是“某种程度上”手动添加的。

我们可以使用替代容器类型来克服这个问题,例如 Vecvec! 宏可让您根据需要多次克隆字符串以填充新向量:

let mut array: Vec<String> = vec![String::new(); 126];

当然,根据您的用例,您也可以考虑偷懒,只使用 Iterator API 收集最终结果。 .

关于arrays - 在 Rust 中初始化字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44186660/

相关文章:

C# byte array xml序列化

C++ 在二维数组的每一行和每一列中查找最小值和最大值

java - 迭代由 MySQL 表填充的数组

java - if 语句 undefined variable

rust - 生命周期参数化结构上方法的正确类型是什么?

rust - 为什么盒装变量需要显式类型才能传递给函数?

rust - 摆脱生命周期的限制?

rust - 实现树形数据结构

rust - 将代码生成标志添加到 Cargo 构建中

javascript - Angular JS : Pushing objects into an array. 它正在创建一个对象,然后是另一个数组。我需要它来创建单独的对象。这可能吗?