Posso passare una funzione come parametro in Rust (probabilmente sì), se possibile, come posso fare.In Rust come si passa una funzione come parametro?
Se non ci riesci, che è una buona alternativa.
Ho provato alcuni sintassi, ma non ho ottenuto
So che posso fare questo
..//
let fun: fn(value: i32) -> i32;
fun = funTest;
fun(5i32);
..//
fn funTest(value: i32) -> i32 {
println!("{}", value);
value
}
ma non come passare la funzione come parametro a un'altra funzione
..//
fn funTest(value: i32, (some_function_prototype)) -> i32 {
println!("{}", value);
value
}
c'è una differenza nell'uso di oppure no (.., f: & Fn ...) le due opere, alcuni dettagli che ho bisogno di sapere? –
@AngelAngel: Beh, 'Fn *' sono tratti, quindi si applica il solito '' vs '(t: & T)'. Il limite principale della soluzione non generica è che deve essere utilizzato con riferimenti. Quindi se vuoi 'FnOnce', che dovrebbe essere passato come copia, devi usare lo stile generico. –
rodrigo
Si noti che è più idiomatico usare i generici invece degli oggetti tratti (cioè '' invece di '(f: & Fn ...)'. E questo è per una ragione - i generici generano un invio statico, mentre gli oggetti tratti richiedono spedizione dinamica. –