Ah think I found it : http://www.reddit.com/r/rust/comments/24afw8/would_it_be_a_good_idea_to_require_mut_when/
On Wed, Apr 30, 2014 at 9:28 AM, Artella Coding < [email protected]> wrote: > Hi, do you have a link to the reddit article, so I can have a read? Thanks > > > On Wed, Apr 30, 2014 at 8:33 AM, Noam Yorav-Raphael <[email protected]>wrote: > >> Hi, >> >> I had a bug caused by a function mutating its arguments, and it had >> occurred to me that it may be a good idea if rust would require a "mut" >> prefix in that case. I asked on reddit, and was referred to this thread: >> https://mail.mozilla.org/pipermail/rust-dev/2014-January/007670.html >> >> In the above message, Patrick shows a few examples which show that it's >> hard to come up with rules on which arguments should be prefixed by "mut" >> that will be sound and complete. I have an idea which may be. The idea is >> to not look at function arguments but at uses of a variable. Here's a rule: >> >> Whenever a variable which was declared with "let mut" is being used in a >> way that would have been illegal have it not been declared with "let mut", >> it should be prefixed by "mut", unless it's obvious from the context that >> it has to be mutable. >> >> I think it's quite simple and says exactly what should be the rules in >> Patrick's examples. What's not well-defined is the "obvious from the >> context" part. Certainly when a variable is on the left hand side of an >> assignment there would be no need for "mut" annotation, as well as when >> it's being prefixed by "&mut". I don't know if there are other cases. >> >> (If you're interested in the bug: I had to use a function solve(A, b) >> which gets a matrix A and a vector b and returns a vector x such that Ax=b. >> It does Gauss elimination, and for efficiency it modified A and b instead >> of allocating new arrays. I used it like x = solve(A, b) and then used A >> again. It was in Fortran, so the arguments A and b were annotated as being >> "in out", but of course it didn't stop my perfectly looking function from >> having a hidden bug.) >> >> What do you think? >> Noam >> >> _______________________________________________ >> Rust-dev mailing list >> [email protected] >> https://mail.mozilla.org/listinfo/rust-dev >> >> >
_______________________________________________ Rust-dev mailing list [email protected] https://mail.mozilla.org/listinfo/rust-dev
