Решением было бы переместить значение в замыкание, а затем заставить его вернуть его:
use std::ops::Add;
fn main() {
let mut a = "a string".to_string();
let cl = || {
a.add(" another string")
};
a = cl();
println!("{:?}", a);
}
Но захват внешней области довольно ограничен.Например, нельзя определить два замыкания таким образом.Возможно, вы захотите более гибкое решение:
let a = "a string".to_string();
let c1 = |s: String| {
s.add(" another string")
};
let c2 = |s: String| {
s + " and another one"
};
let a = c1(a);
let a = c2(a);