diff options
| author | Steve Klabnik <steve@steveklabnik.com> | 2015-04-21 11:18:33 -0400 |
|---|---|---|
| committer | Steve Klabnik <steve@steveklabnik.com> | 2015-04-21 16:18:51 -0400 |
| commit | f78ee1aff1184c08b8d82f96fb9077586d1a4ed0 (patch) | |
| tree | c9ffa02366179ed197773faa532b5057f2cd7de5 /src | |
| parent | 3860240b0e124f38483ea4bd070b61d362871ece (diff) | |
| download | rust-f78ee1aff1184c08b8d82f96fb9077586d1a4ed0.tar.gz rust-f78ee1aff1184c08b8d82f96fb9077586d1a4ed0.zip | |
Document functional update syntax
Fixes #24639
Diffstat (limited to 'src')
| -rw-r--r-- | src/doc/trpl/structs.md | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/doc/trpl/structs.md b/src/doc/trpl/structs.md index ff249d6043c..fcf928e427c 100644 --- a/src/doc/trpl/structs.md +++ b/src/doc/trpl/structs.md @@ -87,3 +87,33 @@ fn main() { point.y = 6; // this causes an error } ``` + +# Update syntax + +A `struct` can include `..` to indicate that you want to use a copy of some +other struct for some of the values. For example: + +```rust +struct Point3d { + x: i32, + y: i32, + z: i32, +} + +let mut point = Point3d { x: 0, y: 0, z: 0 }; +point = Point3d { y: 1, .. point }; +``` + +This gives `point` a new `y`, but keeps the old `x` and `z` values. It doesn’t +have to be the same `struct` either, you can use this syntax when making new +ones, and it will copy the values you don’t specify: + +```rust +# struct Point3d { +# x: i32, +# y: i32, +# z: i32, +# } +let origin = Point3d { x: 0, y: 0, z: 0 }; +let point = Point3d { z: 1, x: 2, .. origin }; +``` |
