What's the difference between `FnOnce`, `Fn` and `FnMut`
As long as I'm using rust I always could not understand the difference between those traits and how I should choose which one to use in generics.
Can somebody make an easy explanation what's the difference between them and in which situations which one should I use?