gpt4 book ai didi

rust - 我可以使用方法或函数作为闭包吗?

转载 作者:行者123 更新时间:2023-11-29 07:52:57 25 4
gpt4 key购买 nike

我在一个结构上有一些方法,我想将它们作为参数传递。我很确定传递函数的唯一方法是使用闭包。有没有办法我可以不做|| { self.x() }?

最佳答案

您完全可以将方法或函数用作闭包。您使用函数或方法的完整路径,包括特征方法:

一个免费的功能:

struct Monster {
health: u8,
}

fn just_enough_attack(m: Monster) -> u8 {
m.health + 2
}

fn main() {
let sully = Some(Monster { health: 42 });
let health = sully.map(just_enough_attack);
}

固有方法:

struct Monster {
health: u8,
}

impl Monster {
fn health(&self) -> u8 { self.health }
}

fn main() {
let sully = Some(Monster { health: 42 });
let health = sully.as_ref().map(Monster::health);
}

特征方法:

fn main() {
let name = Some("hello");
let owned_name = name.map(ToOwned::to_owned);
}

请注意,参数类型必须完全匹配,这包括按引用或按值。

关于rust - 我可以使用方法或函数作为闭包吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32857158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com