https://doc.rust-lang.org/nomicon/subtyping.html#variance
https://github.com/rust-lang/rust/issues/15699
And an RFC by some people that felt frustrated by this arguably implementation-centric view that kind of lost steam:
https://github.com/rust-lang/rfcs/issues/391
Intuitively, the bottom lifetime should the one that is uninhabited, which would be a lifetime with no extent rather than 'static.
1. When A is a subtype of B, it means A can be used as B (a Teacher can be used by any function that accepts a Human).
2. static lifetime lives longer any other lifetimes, so it can be used as other lifetimes.