rust 如何Map到结构方法?

3ks5zfa0  于 2023-08-05  发布在  其他
关注(0)|答案(1)|浏览(90)

我正在尝试使用结构方法作为Map目标。当我尝试在map参数中简单地通过'self.method'引用方法时,我得到错误'method,not a field'。
下面是一些简单的代码来展示我正在尝试做的事情

impl Astruc {
    fn map_function(&self, index: usize) -> usize {
        2 * index
    }
    fn map_attempt(&self) {
        (0..10).map(self.map_function)  // this causes the error: method, not a field
    }
}

字符串
如何正确引用map_function

s6fujrry

s6fujrry1#

要调用示例上的方法,可以使用闭包。

fn map_attempt(&self) {
    (0..10).map(|i| self.map_function(i))
        .for_each(|i| println!("{i}"));
}

字符串
但是,如果实际上不需要在示例上调用map_function,则可以使用结构体或Self的名称引用它(在删除self参数之后)。

impl Astruc {
    fn map_function(index: usize) -> usize {
        2 * index
    }
    fn map_attempt(&self) {
        (0..10).map(Self::map_function)
            .for_each(|i| println!("{i}"));
    }
}

相关问题