These three types seem like they may be important for creating safe FFI bindings? I personally have no idea what covariant, contravariant, and invariant mean, but I figure these are useful to types in general. It looks like the vector iterator takes one of these, so it seems like code in general may like it.

If you say that I almost certainly never want covariant lifetimes, I'd believe you, but it would also be nice to have documentation pointing somewhere. I'd be perfectly fine with a pointer to go read one of the large doc blocks in borrowck as well!