]> git.lizzy.rs Git - rust.git/commitdiff
auto merge of #16460 : pcwalton/rust/borrowck-closure-issue, r=nikomatsakis
authorbors <bors@rust-lang.org>
Wed, 13 Aug 2014 04:11:22 +0000 (04:11 +0000)
committerbors <bors@rust-lang.org>
Wed, 13 Aug 2014 04:11:22 +0000 (04:11 +0000)
This fixes borrow checking for closures. Code like this will break:

    struct Foo {
        x: int,
    }

    pub fn main() {
        let mut this = &mut Foo {
            x: 1,
        };
        let r = || {
            let p = &this.x;
            &mut this.x;
        };
        r()
    }

Change this code to not take multiple mutable references to the same value. For
example:

    struct Foo {
        x: int,
    }

    pub fn main() {
        let mut this = &mut Foo {
            x: 1,
        };
        let r = || {
            &mut this.x;
        };
        r()
    }

Closes #16361.

[breaking-change]

r? @nikomatsakis


Trivial merge