use ghost::phantom; #[phantom] struct ContravariantPhantom<#[contra] T>; fn require_covariant<'a>(phantom: ContravariantPhantom<&'static str>) -> ContravariantPhantom<&'a str> { phantom } fn require_contravariant<'a>(phantom: ContravariantPhantom<&'a str>) -> ContravariantPhantom<&'static str> { phantom } fn main() {}