Czy mogę przekazać funkcję jako parametr w Rust (prawdopodobnie tak), jeśli jest to możliwe, tak jak ja.W Rust, w jaki sposób przekazujesz funkcję jako parametr?
Jeśli nie możesz, co jest dobrą alternatywą.
Próbowałem trochę składni, ale nie dostał
wiem, że mogę to zrobić
..//
let fun: fn(value: i32) -> i32;
fun = funTest;
fun(5i32);
..//
fn funTest(value: i32) -> i32 {
println!("{}", value);
value
}
ale nie tak przekazując funkcję jako parametr do innej funkcji
..//
fn funTest(value: i32, (some_function_prototype)) -> i32 {
println!("{}", value);
value
}
Istnieje różnica w używaniu lub nie (.., f: & Fn ...) dwóch prac, jakichś szczegółów, które muszę znać? –
@AngelAngel: Cóż, 'Fn *' to cechy, więc stosuje się zwykle '' vs '(t: & T)'. Głównym ograniczeniem nietypowego rozwiązania jest to, że musi być używane z odniesieniami. Więc jeśli chcesz 'FnOnce', który powinien być przekazany jako kopia, musisz użyć ogólnego stylu. –
rodrigo
Należy zauważyć, że bardziej idiomatyczne jest używanie generycznych zamiast obiektów cech (np. '' zamiast '(f: & Fn ...)'. A to z jakiegoś powodu - generics spowoduje statyczną wysyłkę, podczas gdy obiekty cech wymagają dynamiczna wysyłka. –