C'è un modo per creare un puntatore a un metodo in Rust? Ad esempio,Puntatore del metodo ruggine
struct Foo;
impl Foo {
fn bar(&self) {}
fn baz(&self) {}
}
let foo = Foo;
let callback = foo.bar; // Does not work
C'è un modo per creare un puntatore a un metodo in Rust? Ad esempio,Puntatore del metodo ruggine
struct Foo;
impl Foo {
fn bar(&self) {}
fn baz(&self) {}
}
let foo = Foo;
let callback = foo.bar; // Does not work
Con UFCS, Foo::bar
funzionerà, ottenendo un fn(&Foo) ->()
(simile a Python); se questo è ciò che si vuole (cioè, definendolo come callback(&foo)
), poi al momento, è necessario scrivere il proprio involucro:
fn foo_bar(x: &Foo) { x.bar() }
let callback = foo_bar;
Tuttavia, se si vuole con la variabile "sé" già legato (come in, chiamando callback()
sarà lo stesso di chiamare bar
sull'oggetto foo
), allora è necessario utilizzare una chiusura esplicita
let callback = || foo.bar();
Grazie. Usare una chiusura è anche una buona idea per legare "se stessi". – Vortico