rust/tests/ui/binop/borrow-suggestion-109352-2.rs

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
}