我有一些在结构体中的方法,我想将它们作为参数传递。我相信传递函数的唯一方法是使用闭包。是否有一种方法可以做到这一点而不使用
|| { self.x() }
?
我有一些在结构体中的方法,我想将它们作为参数传递。我相信传递函数的唯一方法是使用闭包。是否有一种方法可以做到这一点而不使用
|| { 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);
}
请注意,参数类型必须完全匹配,包括按引用传递或按值传递。
str::to_owned
(当作用域中只有一个str
上的to_owned
时)可以工作,<str>::to_owned
和<str as ToOwned>::to_owned
也可以,后者是完全限定形式。 - huonint_iter.map(int_taker.take_int)
(其中takes_int
是一个类似于fn(&self, I: i64) -> i64
的方法)? - weberc2