Rust方法指针

时间:2014-07-14 01:17:19

标签: rust

有没有办法在Rust中创建指向方法的指针?例如,

struct Foo;

impl Foo {
    fn bar(&self) {}
    fn baz(&self) {}
}

let foo = Foo;
let callback = foo.bar; // Does not work

1 个答案:

答案 0 :(得分:16)

使用UFCSFoo::bar将起作用,产生fn(&Foo) -> ()(类似于Python);如果这是你想要的(也就是说,像callback(&foo)那样调用),那么此刻,你必须编写自己的包装器:

fn foo_bar(x: &Foo) { x.bar() }

let callback = foo_bar;

然而,如果你想要" self"变量已绑定(如调用callback()将与调用bar对象上的foo相同),那么您需要使用显式闭包

let callback = || foo.bar();