我想创建一个Vec<T>,并为它留出一些空间,但我不知道怎么做,而且,令我惊讶的是,官方文档中几乎没有关于这种基本类型的内容.

let mut v: Vec<i32> = Vec<i32>(SIZE); // How do I do this ?

for i in 0..SIZE {
    v[i] = i;
}

我知道我可以创建一个空的Vec<T>,并用pushE填充它,但我不想这样做,因为当我在索引i处写入一个值时,我并不总是知道是否已经在那里插入了一个值.出于明显的性能原因,我不想写这样的东西:

if i >= len(v) {
    v.push(x);
} else {
    v[i] = x;
}

当然,我也不能使用vec!语法.

推荐答案

可以使用the vec! macro的第一个语法,特别是vec![elem; count].例如:

vec![1; 10]

将创建一个包含10个1Vec<_>(类型_将稍后确定或默认为i32).给定给宏的elem必须实现Clone.count也可以是一个变量.

Rust相关问答推荐

有没有方法处理rust中嵌套的ok_or()?

为什么在Rust struct 中只允许最后一个字段具有动态大小的类型

在Tauri中获取ICoreWebView 2_7以打印PDF

S,一般性状和联想型性状有什么不同?

一种随机局部搜索算法的基准(分数)

我是否可以在Ruust中修改 struct 实例上的字符串,以使其在修改后具有相同的字符串生存期?

如何在不调用Collect()的情况下为新型vec实现IntoIterator?

JSON5中的变量类型(serde)

零拷贝按步骤引用一段字节

Rust ndarray:如何从索引中 Select 数组的行

在什么情况下 `..._or()` 比 `..._or_else(|| {})` 更好,为什么?

Rust,如何从 Rc> 复制内部值并返回它?

tokio::sync::broadcast::Receiver 不是克隆

Nom 解析器无法消耗无效输入

全面的 Rust Ch.16.2 - 使用捕获和 const 表达式的 struct 模式匹配

bcrypt 有长度限制吗?

不能将 `*self` borrow 为不可变的,因为它也被borrow 为可变的 - 编译器真的需要如此严格吗?

如何在 Rust 中将 bson::Bson 转换为 Vec

在 Rust 中,将可变引用传递给函数的机制是什么?

通用类型,不同于输入类型,作为函数的返回值