On representing game worlds in Rust using Entity-Component-System, modelling state, and avoiding self-borrowing: https://kyren.github.io/2018/09/14/rustconf-talk.html