rust - 如何绘制范围?

标签 rust

我正在尝试为n范围内的每个元素构建对象,所以最后我有一个对象切片。 但似乎无法找出正确的方法。尝试过:

[0..n].map(convert_int_to_object)

最佳答案

方括号[]在Rust中表示数组; a..b(a..b) 表示范围。因此,要在该范围内创建迭代器,您需要的是:

(0..n).map(convert_int_to_object)

这会创建一个迭代器,但您需要将所有新对象收集到一个集合中,例如 Vec。例如:

fn my_fun(n: i32) -> Vec<MyStruct> {
    (0..n).map(convert_int_to_object).collect()
}

您请求了一个切片,但您正在创建新对象(分配),因此您需要使用 Vec 因为它拥有新对象。您可以使用 &vv.as_slice() 从向量 v 获取切片。

let v = my_fun(10);
let slice = v.as_slice();

关于rust - 如何绘制范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74998452/

相关文章:

rust - Rust 中的不可变变量和 const 变量有什么区别?

vector - 我怎样才能获得 Vec 元素的所有权并将其替换为其他元素?

rust - 在 Rust 中减少与折叠字符串连接

rust - 如何将生命周期限制在代码区域?

rust - 我的 crate 如何检查依赖项的选定功能?

string - 与 `char::is_ascii_alphanumeric` 匹配字符串失败,而 `char::is_alphanumeric` 编译

memory-management - 在不调整数组大小的情况下填充任意大小的向量的惯用方法?

rust - 是否可以使一种类型只能移动而不能复制?

rust - 当 crate 既是 Rust 库又是可执行文件时,应该提交 Cargo.lock 吗?

rust - Rust 可以捕获 C/C++ 库的 stdout/stderr 吗?