Rust方法指针

Vor*_*ico 12 rust

有没有办法在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)