On Monday, 12 May 2014 at 08:10:43 UTC, Tommi wrote:
Perhaps: [..]

Somewhat surprisingly to me, you can later on change the borrowed pointer in the mutable static 'Test' to point at a mutable static int:

struct Test {
    n: &'static int
}

static old: int = 111;
static mut new: int = 222;
static mut t: Test = Test { n: &'static old };

fn main() {
    unsafe {
        println!("{}", *t.n); // prints: 111
        t.n = &new; // Can point to a different static
        println!("{}", *t.n); // prints: 222
        // ...but can't point to a local, e.g:
        // let v = 123;
        // t.n = &v; // error: `v` does not live long enough
        new = 333;
        println!("{}", *t.n); // prints: 333
    }
}

Reply via email to