From 219ddd1f61f0476a8d76afca26be697e8a25919d Mon Sep 17 00:00:00 2001 From: Markus Westerlind Date: Mon, 8 Jun 2015 23:18:32 +0200 Subject: [PATCH] Mention the short form pattern syntax in the book Explains short form pattern syntax and then introduces the longer pattern matching as a rebinding of the fields instead. #25779 --- src/doc/trpl/patterns.md | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/doc/trpl/patterns.md b/src/doc/trpl/patterns.md index 93df0f19e8ee..270e31e9ffb5 100644 --- a/src/doc/trpl/patterns.md +++ b/src/doc/trpl/patterns.md @@ -196,12 +196,27 @@ struct Point { let origin = Point { x: 0, y: 0 }; match origin { - Point { x: x, y: y } => println!("({},{})", x, y), + Point { x, y } => println!("({},{})", x, y), } ``` [struct]: structs.html +We can use `:` to give a value a different name. + +```rust +struct Point { + x: i32, + y: i32, +} + +let origin = Point { x: 0, y: 0 }; + +match origin { + Point { x: x1, y: y1 } => println!("({},{})", x1, y1), +} +``` + If we only care about some of the values, we don’t have to give them all names: ```rust @@ -213,7 +228,7 @@ struct Point { let origin = Point { x: 0, y: 0 }; match origin { - Point { x: x, .. } => println!("x is {}", x), + Point { x, .. } => println!("x is {}", x), } ``` @@ -230,7 +245,7 @@ struct Point { let origin = Point { x: 0, y: 0 }; match origin { - Point { y: y, .. } => println!("y is {}", y), + Point { y, .. } => println!("y is {}", y), } ```