- impl type aliasing and make 'Self' a type alias instead of a new type
- Fn type
- check if variable shadowing works as intended
- type id's should be global. think of type names as aliases into type ids
- intern strings
- struct default values
- explicitly tagged unions, with #[explicitly_tagged] on the union and #[tag=...] on the variant?
- https://doc.rust-lang.org/reference/expressions/struct-expr.html#functional-update-syntax
- unit type '()'
- loop labels
- size_of::