1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
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
}
|