小编Chu*_*uck的帖子

编写迭代器

编者注:此代码示例来自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)

iterator rust

5
推荐指数
1
解决办法
2731
查看次数

标签 统计

iterator ×1

rust ×1