编者注:此代码示例来自1.0之前的Rust版本,并且不是有效的Rust 1.0代码.由于更改了
for循环的实现方式,此代码的更新版本不再产生错误.
我正在Rust中编写一个Vector结构.
pub struct Vector {
pub x: f32,
pub y: f32,
pub z: f32,
curr: uint
}
Run Code Online (Sandbox Code Playgroud)
我想为它编写一个简单的迭代器,以便我可以迭代向量的元素.它偶尔会有用,而且我对Rust中的迭代器几乎一无所知.
这就是我现在所拥有的.
impl Iterator<f32> for Vector {
fn next(&mut self) -> Option<f32> {
let new_next : Option<f32> = match self.curr {
0 => Some(self.x),
1 => Some(self.y),
2 => Some(self.z),
_ => None
};
let new_curr = (self.curr + 1) % 4;
mem::replace(&mut self.curr, new_curr);
new_next
}
}
Run Code Online (Sandbox Code Playgroud)
理想情况下,我希望能够像以下一样使用它:
let u = Vector::new(0.0f32, 0.0f32, 0.0f32);
for element in u …Run Code Online (Sandbox Code Playgroud)