28 lines
633 B
Rust
28 lines
633 B
Rust
|
struct Bar;
|
||
|
|
||
|
impl std::ops::Mul for &mut Bar {
|
||
|
type Output = Bar;
|
||
|
|
||
|
fn mul(self, _rhs: Self) -> Self::Output {
|
||
|
unimplemented!()
|
||
|
}
|
||
|
}
|
||
|
|
||
|
fn main() {
|
||
|
let ref_mut_bar: &mut Bar = &mut Bar;
|
||
|
let ref_bar: &Bar = &Bar;
|
||
|
let owned_bar: Bar = Bar;
|
||
|
|
||
|
let _ = ref_mut_bar * ref_mut_bar;
|
||
|
|
||
|
// FIXME: we should be able to suggest borrowing both side
|
||
|
let _ = owned_bar * owned_bar;
|
||
|
//~^ ERROR cannot multiply
|
||
|
let _ = ref_bar * ref_bar;
|
||
|
//~^ ERROR cannot multiply
|
||
|
let _ = ref_bar * ref_mut_bar;
|
||
|
//~^ ERROR cannot multiply
|
||
|
let _ = ref_mut_bar * ref_bar;
|
||
|
//~^ ERROR mismatched types
|
||
|
}
|