Reference
https://rust-lang.github.io/generic-associated-types-initiative/index.html