协变与逆变

第一次接触 covariant(协变) 和 contravariant(逆变) 是在学习 Rust 的时候,然后就因为没看懂放弃了。直到最近有一次看到了这个术语,结合了 Kotlin 中的 covariant 和 contravariant ,逐渐理解了 Rust 中的 covariant 和 contravariant。下面我们从 Kotlin 中的 covariant 和 contravariant 入手,然后将其推广到 Rust 中。