有没有办法在Rust中创建指向方法的指针?例如,
struct Foo;
impl Foo {
fn bar(&self) {}
fn baz(&self) {}
}
fn main() {
let foo = Foo;
let callback = foo.bar;
}
Run Code Online (Sandbox Code Playgroud)
huo*_*uon 20
使用UFCS,Foo::bar将工作,产生一个fn(&Foo) -> ()(类似于Python); 如果这是你想要的(也就是说,调用它self),那么此刻,你必须编写自己的包装器:
let callback = Foo::bar;
// called like
callback(&foo);
Run Code Online (Sandbox Code Playgroud)
但是,如果你已经绑定了"自我"可变希望它(如,通话callback()将与调用bar上的foo对象),那么你需要使用一个明确关闭
let callback = || foo.bar();
// called like
callback();
Run Code Online (Sandbox Code Playgroud)