Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I think they're referring to something like this

    let v = vec![0; 42];
    v.try_reserve(1);
    frob(&mut v); // I expect this not to expand the array
    v.push(1); // fails, because frob took the space
Note that this requires passing a mutable reference to frob. Absent an explicit contract in the api documentation I wouldn't expect a function that takes a mutable reference to a vec not to mutate it arbitrarily.

One option for avoiding this would be to pass a mutable reference to a slice, which allows frob to mutate elements of the vec without allowing it to push.

   frob(&v[..])
It can't be a race in the traditional sense, as the borrow checker will enforce only one person being able to write at a time.


Yes exactly. Thanks.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: