23 lines
480 B
Rust
23 lines
480 B
Rust
// Contravariant with respect to a region:
|
|
//
|
|
// You can upcast to a *smaller region* but not a larger one. This is
|
|
// the normal case.
|
|
|
|
struct contravariant {
|
|
f: fn@() -> &self/int
|
|
}
|
|
|
|
fn to_same_lifetime(bi: contravariant/&r) {
|
|
let bj: contravariant/&r = bi;
|
|
}
|
|
|
|
fn to_shorter_lifetime(bi: contravariant/&r) {
|
|
let bj: contravariant/&blk = bi;
|
|
}
|
|
|
|
fn to_longer_lifetime(bi: contravariant/&r) -> contravariant/&static {
|
|
bi //~ ERROR mismatched types
|
|
}
|
|
|
|
fn main() {
|
|
} |