訪問片是直接使用切片語法:slice = vector[i..j]
如何從結構中的預定義'Range'訪問切片?
的情況下的範圍內不論如何儲存,從我可以告訴你不能做的:
struct StructWithRange {
range: std::ops::Range<usize>,
}
fn test_slice(s: &StructWithRange, vector: &Vec<i32>) {
let slice = &vector[s.range];
println!("{:?}", slice); // prints [2, 3]
}
fn main() {
let vector = vec![1,2,3,4,5];
let s = StructWithRange {
range: 1..3
};
test_slice(&s, &vector);
}
這給了錯誤:
error[E0507]: cannot move out of borrowed content
--> src/main.rs:6:25
|
6 | let slice = &vector[s.range];
| ^cannot move out of borrowed content
有沒有辦法從一個範圍中獲得切片而不擴大它?
如:vector[s.range.start..s.range.end]
如果一個結構體的usize
可以用於索引查找,爲什麼不能在Range<usize>
被以同樣的方式使用?
請發表[MCVE],因爲它應該工作,但沒有一個明顯的例子,這是很難理解什麼是可能錯了代碼,你沒有顯示。此MCVE還應該包含從編譯器獲得的錯誤消息。 –