1
我想創建一個結構來保存切片,並且可以返回對該切片中項目的引用。到目前爲止,我已經能夠做到這一點:不能使用可變片不可變的切片很好
pub struct Stride<'a> {
items: &'a [f32],
}
impl<'a> Iterator for Stride<'a> {
type Item = &'a f32;
fn next(&mut self) -> Option<&'a f32> {
Some(&self.items[0])
}
}
然而,當我改變片是一個可變片:
pub struct Stride<'a> {
items: &'a mut [f32],
}
impl<'a> Iterator for Stride<'a> {
type Item = &'a f32;
fn next(&mut self) -> Option<&'a f32> {
Some(&self.items[0])
}
}
我得到一個編譯錯誤:
test.rs:8:14: 8:28 error: cannot infer an appropriate lifetime for borrow expression due to conflicting requirements
test.rs:8 Some(&self.items[0])
^~~~~~~~~~~~~~
爲什麼我不能容納這個可變片,並返回對該片中元素的引用?我想更進一步:返回此切片中元素的可變引用。這甚至有可能嗎?
我假設你問這是怎麼實現的。如果你想在真實世界中做到這一點,你可以使用標準中的['iter_mut'](http://doc.rust-lang.org/std/slice/trait.SliceExt.html#tymethod.iter_mut)圖書館。 – Shepmaster