Equivalencia desde Kotlin
Genéricos y varianza
CercanaEn Rust, propiedad y préstamos; no subtipado nominal de tipos de dominio expresa la responsabilidad del fixture: Source<T> produce valores y Sink<T> los consume sin mezclar ambas responsabilidades.
Referencia Kotlin: Source<out T> es covariante y Sink<in T> es contravariante.
- Mecanismo
- propiedad y préstamos; no subtipado nominal de tipos de dominio
- Riesgo de diseño
- Copiar la sintaxis de Kotlin en vez de usar propiedad y préstamos; no subtipado nominal de tipos de dominio.
- Recomendación
- Expón el contrato del fixture y usa propiedad y préstamos; no subtipado nominal de tipos de dominio solo para la garantía que realmente ofrece.
Diferencias relevantes
- La varianza puede declararse, proyectarse en el uso o no tener una noción de subtipado equivalente.
- La forma idiomática de Rust debe conservarse aunque la sintaxis difiera de Kotlin.
Source<T> produce valores y Sink<T> los consume sin mezclar ambas responsabilidades.
trait Source<T> { fn get(&self) -> &T; }
// Rust expresa seguridad con ownership y borrowing, no con subtipado Animal/Cat.