Skip to content

Commit

Permalink
Rollup merge of rust-lang#36929 - angelsl:issue-36683, r=steveklabnik
Browse files Browse the repository at this point in the history
Reference: Mention `move` keyword for lambdas

From issue rust-lang#36683
  • Loading branch information
GuillaumeGomez authored Oct 7, 2016
2 parents c75001b + 58190cc commit bf41e9f
Showing 1 changed file with 7 additions and 2 deletions.
9 changes: 7 additions & 2 deletions src/doc/reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand All @@ -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
Expand Down

0 comments on commit bf41e9f

Please sign in to comment.