From 9bf73d24d0fdc4f6dbca702ec85c5583abc921cd Mon Sep 17 00:00:00 2001 From: srinivasreddy Date: Wed, 2 Mar 2016 09:36:30 +0530 Subject: [PATCH] Explained the difference between ownership iteration and reference iteration --- src/doc/book/vectors.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/doc/book/vectors.md b/src/doc/book/vectors.md index f5a543d75b1b..0eba4d40ede0 100644 --- a/src/doc/book/vectors.md +++ b/src/doc/book/vectors.md @@ -114,7 +114,30 @@ for i in v { println!("Take ownership of the vector and its element {}", i); } ``` +Note: You cannot use the vector again once you have iterated with ownership of the vector. +You can iterate the vector multiple times with reference iteration. For example, the following +code does not compile. +```rust +let mut v = vec![1, 2, 3, 4, 5]; +for i in v { + println!("Take ownership of the vector and its element {}", i); +} +for i in v { + println!("Take ownership of the vector and its element {}", i); +} +``` +Whereas the following works perfectly, +```rust +let mut v = vec![1, 2, 3, 4, 5]; +for i in &v { + println!("A mutable reference to {}", i); +} + +for i in &v { + println!("A mutable reference to {}", i); +} +``` Vectors have many more useful methods, which you can read about in [their API documentation][vec].