23 lines
481 B
Rust
23 lines
481 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() {
|
||
|
}
|