mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-23 15:23:46 +00:00
Add section on closure types to manual
This commit is contained in:
parent
61443dc1f5
commit
94c02af873
26
doc/rust.md
26
doc/rust.md
@ -3193,6 +3193,32 @@ let bo: Binop = add;
|
|||||||
x = bo(5,7);
|
x = bo(5,7);
|
||||||
~~~~
|
~~~~
|
||||||
|
|
||||||
|
### Closure types
|
||||||
|
|
||||||
|
The type of a closure mapping an input of type `A` to an output of type `B` is `|A| -> B`. A closure with no arguments or return values has type `||`.
|
||||||
|
|
||||||
|
|
||||||
|
An example of creating and calling a closure:
|
||||||
|
|
||||||
|
```rust
|
||||||
|
let captured_var = 10;
|
||||||
|
|
||||||
|
let closure_no_args = || println!("captured_var={}", captured_var);
|
||||||
|
|
||||||
|
let closure_args = |arg: int| -> int {
|
||||||
|
println!("captured_var={}, arg={}", captured_var, arg);
|
||||||
|
arg // Note lack of semicolon after 'arg'
|
||||||
|
};
|
||||||
|
|
||||||
|
fn call_closure(c1: ||, c2: |int| -> int) {
|
||||||
|
c1();
|
||||||
|
c2(2);
|
||||||
|
}
|
||||||
|
|
||||||
|
call_closure(closure_no_args, closure_args);
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
### Object types
|
### Object types
|
||||||
|
|
||||||
Every trait item (see [traits](#traits)) defines a type with the same name as the trait.
|
Every trait item (see [traits](#traits)) defines a type with the same name as the trait.
|
||||||
|
Loading…
Reference in New Issue
Block a user