]> git.lizzy.rs Git - rust.git/commitdiff
Add a precision for references
authorGuillaume Gomez <guillaume1.gomez@gmail.com>
Fri, 8 May 2015 21:54:24 +0000 (23:54 +0200)
committerGuillaume Gomez <guillaume1.gomez@gmail.com>
Fri, 8 May 2015 21:54:24 +0000 (23:54 +0200)
src/doc/trpl/references-and-borrowing.md

index 21feff73342ce0db1a83a52a7ea98cf70627c6be..06ff9bfbc55d9848fd8dbb601f82be7694eaf3e4 100644 (file)
@@ -334,3 +334,35 @@ In other words, `y` is only valid for the scope where `x` exists. As soon as
 `x` goes away, it becomes invalid to refer to it. As such, the error says that
 the borrow ‘doesn’t live long enough’ because it’s not valid for the right
 amount of time.
+
+The same problem occurs when the reference is declared _before_ the variable it refers to:
+
+```rust,ignore
+let y: &i32;
+let x = 5;
+y = &x;
+
+println!("{}", y);
+```
+
+We get this error:
+
+error: `x` does not live long enough
+y = &x;
+     ^
+note: reference must be valid for the block suffix following statement 0 at
+2:16...
+    let y: &i32;
+    let x = 5;
+    y = &x;
+    
+    println!("{}", y);
+}
+
+note: ...but borrowed value is only valid for the block suffix following
+statement 1 at 3:14
+    let x = 5;
+    y = &x;
+    
+    println!("{}", y);
+}