From 67c7fd710be56cf3ba5ca03b7291add856e73a8d Mon Sep 17 00:00:00 2001 From: Nathan Kleyn Date: Thu, 13 Aug 2015 09:11:06 +0100 Subject: [PATCH] Improve code examples for E0383 long diagnostic. --- src/librustc_borrowck/diagnostics.rs | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/src/librustc_borrowck/diagnostics.rs b/src/librustc_borrowck/diagnostics.rs index acd2bf3fba9d..0bc439529260 100644 --- a/src/librustc_borrowck/diagnostics.rs +++ b/src/librustc_borrowck/diagnostics.rs @@ -142,23 +142,20 @@ E0383: r##" This error occurs when an attempt is made to partially reinitialize a structure that is currently uninitialized. -For example, this can happen when a transfer of ownership has taken place: +For example, this can happen when a drop has taken place: ``` -let mut t = Test { a: 1, b: None}; -let mut u = Test { a: 2, b: Some(Box::new(t))}; // `t` is now uninitialized - // because ownership has been - // transferred -t.b = Some(Box::new(u)); // error, partial reinitialization of uninitialized - // structure `t` +let mut x = Foo { a: 1 }; +drop(x); // `x` is now uninitialized +x.a = 2; // error, partial reinitialization of uninitialized structure `t` ``` This error can be fixed by fully reinitializing the structure in question: ``` -let mut t = Test { a: 1, b: None}; -let mut u = Test { a: 2, b: Some(Box::new(t))}; -t = Test { a: 1, b: Some(Box::new(u))}; +let mut x = Foo { a: 1 }; +drop(x); +x = Foo { a: 2 }; ``` "##,