My personal nightmare is Fn, FnMut, and FnOnce. I always got them in the opposite order as I intended.
FnMut: a function that can be called many times but can have side effects, because of this it must be exclusively held (&mut F)
FnOnce: a function that can be called only once, making use of by-ownership function calls
So I remember it like Fn: just a function FnMut: a function that needs &mut access FnOnce: only used once, moving ownership
I know it took me a long time for that to stick.