<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">That was assuming `Vector` implements `Clone`. For example:<div><br></div><div><div><font face="Source Code Pro">#[deriving(Clone)]</font></div><div><font face="Source Code Pro">struct Vector {</font></div><div><font face="Source Code Pro">    coordinates: Vec<int></font></div><div><font face="Source Code Pro">}</font></div><div><br></div><div><div>On 2014-06-13, at 13:14, Tommi <<a href="mailto:rusty.gates@icloud.com">rusty.gates@icloud.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">Taking an argument by "stable value" (as `self` above) means that any (clonable) variable passed in as that argument is implicitly cloned before it's passed in if the variable is potentially used after been passed in. For example:</div><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><br></div><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><div><font face="Source Code Pro">impl Mul<int, Vector> for Vector {</font></div><div><font face="Source Code Pro">    fn mul(stable self, rhs: &int) -> Vector {</font></div><div><font face="Source Code Pro">        for c in self.coordinates.mut_iter() {</font></div><div><font face="Source Code Pro">            *c *= *rhs;</font></div><div><font face="Source Code Pro">        }</font></div><div><font face="Source Code Pro">        self</font></div><div><font face="Source Code Pro">    }</font></div><div><font face="Source Code Pro">}</font></div></div><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><font face="Source Code Pro"><br></font></div><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><font face="Source Code Pro">fn testing() </font>{</div><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><span style="font-family: 'Source Code Pro';">    let mut v = Vector { coordinates: vec!(1, 2, 3) };</span></div><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><span style="font-family: 'Source Code Pro';">   </span><span style="font-family: 'Source Code Pro';"> </span><font face="Source Code Pro">v * 1; // Cloned due to not last use</font></div><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><span style="font-family: 'Source Code Pro';">   </span><span style="font-family: 'Source Code Pro';"> </span><font face="Source Code Pro">v * 1; // Not cloned due to last use before assignment</font></div><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><span style="font-family: 'Source Code Pro';">   </span><span style="font-family: 'Source Code Pro';"> </span><font face="Source Code Pro">v = </font><span style="font-family: 'Source Code Pro';">Vector { coordinates: vec!(2, 4, 6) };</span></div><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><span style="font-family: 'Source Code Pro';">   </span><span style="font-family: 'Source Code Pro';"> </span><span style="font-family: 'Source Code Pro';">v * 1; // Cloned due to not last use</span></div><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><span style="font-family: 'Source Code Pro';">   </span><span style="font-family: 'Source Code Pro';"> </span><span style="font-family: 'Source Code Pro';">v = v * 1; // Not cloned due to last use before assignment</span></div><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><span style="font-family: 'Source Code Pro';">   </span><span style="font-family: 'Source Code Pro';"> </span><span style="font-family: 'Source Code Pro';">v * 1; // Not cloned due to last use</span></div><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><span style="font-family: 'Source Code Pro';">}</span></div></blockquote></div><br></div></body></html>