条件に応じて呼び出す関数を選択しようとしています。私はその関数を変数に格納しておき、後でその条件を持ち歩かずにもう一度呼び出すことができます。中間変数なしで呼び出す関数を動的に選択
fn foo() {
println! ("Foo");
}
fn bar() {
println! ("Bar");
}
fn main() {
let selector = 0;
let foo: &Fn() = &foo;
let bar: &Fn() = &bar;
let test = match selector {
0 => foo,
_ => bar
};
test();
}
私の質問されています:中間変数を取り除くことが可能とされてここで働いて、最小限の例ですか?私は単にそれらを削除しようとしました:
fn foo() {
println! ("Foo");
}
fn bar() {
println! ("Bar");
}
fn main() {
let selector = 0;
let test = match selector {
0 => &foo as &Fn(),
_ => &bar as &Fn()
};
test();
}
が、その後ボローチェッカーを借り値は試合終了までのみ有効であることを訴える(機能はとにかく'static
あるのでに有効である必要があり、ところで、なぜ?時間の終わり)。私はまた、&foo as &'static Fn()
を使用して'static
の明示的な寿命を明示しようとしましたが、それはどちらも動作しません。