31 lines
698 B
Rust
31 lines
698 B
Rust
trait Foo {
|
|
fn borrowed(&self);
|
|
fn borrowed_mut(&mut self);
|
|
|
|
fn owned(self: Box<Self>);
|
|
}
|
|
|
|
fn borrowed_receiver(x: &dyn Foo) {
|
|
x.borrowed();
|
|
x.borrowed_mut(); // See [1]
|
|
x.owned(); //~ ERROR no method named `owned` found
|
|
}
|
|
|
|
fn borrowed_mut_receiver(x: &mut dyn Foo) {
|
|
x.borrowed();
|
|
x.borrowed_mut();
|
|
x.owned(); //~ ERROR no method named `owned` found
|
|
}
|
|
|
|
fn owned_receiver(x: Box<dyn Foo>) {
|
|
x.borrowed();
|
|
x.borrowed_mut(); // See [1]
|
|
x.managed(); //~ ERROR no method named `managed` found
|
|
x.owned();
|
|
}
|
|
|
|
fn main() {}
|
|
|
|
// [1]: These cases are illegal, but the error is not detected
|
|
// until borrowck, so see the test borrowck-object-mutability.rs
|