On Mon, Jun 16, 2014 at 4:32 PM, Sebastian Gesemann
> [...]
> Assuming this RFC is accepted: How would I have to implement Add for a
> custom type T where moving doesn't make much sense and I'd rather use
> immutable references to bind the operands? I could write
>
>    impl Add<&T,T> for &T {...}
>
> but it seems to me that this requires explicit borrowing in the user code à la
>
>    let x: T = ...;
>    let y: T = ...;
>    let c = &x + &y;
>
> Or is this also handled via implicit borrowing for operators (making
> operators a special case)?
>
> Still, I find it very weird to impl Add for &T instead of T and have
> this asymmetry between &T and T for operands and return value.

On top of that, it seems that this would make the writing of generics
pretty messy. Suddenly, the following generic function won't work
anymore for my T:

  fn foo<R,T:Add<T,R>>(x: &T, y: &T) -> R {
    *x + *y
  }

because T is not an Add<T,R>, but &T is an Add<&T,R>.

Comments?
_______________________________________________
Rust-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to