In Rost übergeben werden, können Sie auf eine Fn
in Bezug zu nehmen, wie documented:Kann ein Merkmal als Fn Referenz oder Schließung
fn call_with_one(some_closure: &Fn(i32) -> i32) -> i32 {
some_closure(1)
}
let answer = call_with_one(&|x| x + 2);
aber ich möchte ein Merkmal, das schreiben, wenn sie umgesetzt, die Runnable kann an alles weitergegeben werden, das eine Fn()
erwartet. Ist das möglich?
trait Runnable {
fn run(&self);
}
struct MyRunnable;
impl Runnable for MyRunnable {
fn run(&self) {}
}
struct StructThatTakesClosure<'life> {
closure_field: &'life Fn(),
}
fn main() {
// is there a way to change the Runnable trait to automatically match the
// Fn() interface such that the MyRunnable instance can be passed directly?
StructThatTakesClosure { closure_field: &|| MyRunnable.run() };
}
Ich habe versucht, die drei normalerweise extern
Anrufe als Standardfunktionen der Umsetzung, aber ich habe es nicht geschafft es zum Laufen zu bringen.