我正在尝试为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
因为它拥有新对象。您可以使用 &v
或 v.as_slice()
从向量 v
获取切片。
let v = my_fun(10);
let slice = v.as_slice();
关于rust - 如何绘制范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74998452/