about summary refs log tree commit diff
diff options
context:
space:
mode:
authorangelsl <hidingfromhidden@gmail.com>2016-10-03 23:49:19 +0800
committerangelsl <hidingfromhidden@gmail.com>2016-10-05 00:59:13 +0800
commit58190ccb634ae7931fd6689e1a2c3b5382843ec9 (patch)
tree6d5c54dd2e78e1bb5d4388014844a563cf5169d3
parent75df685d28947ea7d2422a24f14aa1254da1aeb4 (diff)
reference: mention `move` keyword for lambdas
-rw-r--r--src/doc/reference.md9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/doc/reference.md b/src/doc/reference.md
index 20970ab7a35..b57104fc6f5 100644
--- a/src/doc/reference.md
+++ b/src/doc/reference.md
@@ -3110,10 +3110,12 @@ the lambda expression captures its environment by reference, effectively
 borrowing pointers to all outer variables mentioned inside the function.
 Alternately, the compiler may infer that a lambda expression should copy or
 move values (depending on their type) from the environment into the lambda
-expression's captured environment.
+expression's captured environment. A lambda can be forced to capture its
+environment by moving values by prefixing it with the `move` keyword.
 
 In this example, we define a function `ten_times` that takes a higher-order
-function argument, and we then call it with a lambda expression as an argument:
+function argument, and we then call it with a lambda expression as an argument,
+followed by a lambda expression that moves values from its environment.
 
 ```
 fn ten_times<F>(f: F) where F: Fn(i32) {
@@ -3123,6 +3125,9 @@ fn ten_times<F>(f: F) where F: Fn(i32) {
 }
 
 ten_times(|j| println!("hello, {}", j));
+
+let word = "konnichiwa".to_owned();
+ten_times(move |j| println!("{}, {}", word, j));
 ```
 
 ### Infinite loops