> but why is it valid inside the same scope as illustrated in the code
example?

One use is to allow you to alter the mutability of variables as needed
(often referred to as "freezing" and "thawing"):

    let x = 2;  // this is immutable
    ...  // do stuff that requires x to be immutable
    let mut x = x;  // make x mutable
    ... // do stuff that requires x to be mutable
    let x = x;  // make x immutable again

And yes, the fact that that last line isn't a no-op is definitely something
to watch out for. :)


On Wed, Nov 13, 2013 at 11:25 AM, Joshua Rodgers <[email protected]> wrote:

> I'm curious as to why this is valid, though?  This makes sense if you're
> inside a new or nested scope, but why is it valid inside the same scope as
> illustrated in the code example?
>
> I can understand it from the perspective that I need to mask a function
> name (but that's a nested scope to me, at that point).
>
>
> On Wed, Nov 13, 2013 at 8:54 AM, Scott Lawrence <[email protected]> wrote:
>
>> I would think that `test()` (the function) is in scope for the duration
>> of `let test =`, and then the new definition masks the old one. Similarly,
>>
>> let x = 2;
>> let x = x + 2;
>>
>> If you change the last line to /call/ test(), you should get an error.
>>
>>
>> On Wed, 13 Nov 2013, Philip Herron wrote:
>>
>>  Hey all
>>>
>>> I am still learning but i just tried something which i expected to give
>>> an
>>> error but works:
>>>
>>> fn test () -> int {
>>>  1
>>> }
>>>
>>> fn main () {
>>>  let test = test ();
>>>  println (format! ("{}", test));
>>> }
>>>
>>> I guess on compilation the names are mangled against their types or
>>> something so you can differentiate between test the function and test the
>>> variable. Not sure would be nice to get some clarification what this
>>> behavior is.
>>>
>>> Thanks
>>>
>>> --Phil
>>>
>>>
>> --
>> Scott Lawrence
>> _______________________________________________
>> 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
>
>
_______________________________________________
Rust-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to