слово fn или использовать трейд Fn?
И в чем заключается разница?
fn qwe(func: fn()) { func() } fn asd(func: impl Fn()) { func() } fn main() { let no_capture = || { println!("no_capture") }; let q = &1; let capture = || { println!("catured q: {}", q) }; qwe(a); // ok qwe(no_capture); // ok qwe(capture); // compile error asd(a); // ok asd(no_capture); // ok asd(capture); // ok } fn a() { println!("a") } Мой личный рейтинг использования: 1. Генерик: F: Fn() или arg: impl Fn() 2. dyn трейт: arg: &dyn Fn() 3. указатель на функцию: arg: fn()
Обсуждают сегодня