2014-07-14 11 views
7

Czy istnieje sposób na utworzenie wskaźnika dla metody w Rust? Na przykład,Wskaźnik metody rdzy

struct Foo; 

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

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

Odpowiedz

15

z UFCS, Foo::bar działa, otrzymując fn(&Foo) ->() (podobny do Python); jeśli to jest to, co chcesz (czyli, nazywając ją jak callback(&foo)), to w momencie, trzeba napisać własne otoki:

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

let callback = foo_bar; 

Jednakże, jeśli chcesz go z „ja” zmiennej już oprawionego (jak w, nazywając callback() będą takie same jak wywoływanie bar na obiekcie foo), następnie trzeba użyć wyraźne zamknięcie

let callback = || foo.bar(); 
+1

Dzięki. Używanie zamknięcia jest również dobrym pomysłem, aby związać "siebie". – Vortico

Powiązane problemy