Fn — immutable closure. FnMut — mutable closure. FnOnce — one-time closure.
Fn:
FnMut:
FnOnce:
1let s = String::from("hello");23// Fn: cannot capture mutably4let closure = || println!("{}", s);56// FnMut: can capture mutably7let mut v = vec![];8let mut closure = || v.push(1);9closure();10closure();1112// FnOnce: consumes13let s = String::from("hello");14let closure = || drop(s);15closure();16// closure(); // Error: already consumed
Key: Fn for immutable, FnMut for mutable, FnOnce for consuming.