I'm trying to understand the closures in Rust. I wrote a code like this;

```
use std::ops::Add;

fn main() {
    let mut a = "a string".to_string();

    let mut cl = ||  {
        a.add(" another string");
    };

    cl();

    println!("{:?}", a);
}

```

I expect a result like "a string another string". In the documentation it says that try to avoid using `clone()` where possible, but I can't manage to compile this code without using `a = a.clone().add(" another string")`.