Fn — immutable closure. FnMut — mutable closure. FnOnce — one-time.
Fn:
FnMut:
FnOnce:
1// Fn2let s = String::from("hello");3let closure = || println!("{}", s);4closure();5closure();67// FnMut8let mut v = vec![];9let mut closure = || v.push(1);10closure();11closure();1213// FnOnce14let s = String::from("hello");15let closure = || drop(s);16closure();17// closure(); // Error: already consumed
Key: Fn for immutable, FnMut for mutable, FnOnce for consuming.