https://medium.com/@adamszpilewicz/understanding-fn-fnmut-and-fnonce-in-rust-a-deep-dive-into-closure-traits-aa90e8f69746