2015-01-22 10 views

risposta

7

Questo è ora supportato, chiamato AddAssign (SubAssign, MulAssign ... ecc.).

Questo è un esempio di base:

use std::ops::{Add, AddAssign}; 
struct Float2(f64, f64); 

impl AddAssign for Float2 { 
    fn add_assign(&mut self, rhs: Float2) { 
     self.0 += rhs.0; 
     self.1 += rhs.1; 
    } 
} 
5

Al momento non è possibile, ma è sicuramente qualcosa di molto desiderato. Coperto da RFC issue #393.

Molto tempo fa x += y è stato implementato come x = x + y ma c'erano sempre errori in esso. Non penso che all'epoca ci fossero problemi fondamentali con l'approccio, ma ora penso che il passaggio ai tratti dell'operatore che assumono gli argomenti per valore rende più difficile il corretto funzionamento del desugaring.

+0

Questa risposta è stata corretta al momento, ma da quando è stato implementato. Aggiunta risposta personale – ideasman42