From 723ead6c9cbe28806f97f43ebfc6df95e758734a Mon Sep 17 00:00:00 2001 From: Steve Klabnik Date: Mon, 4 Jan 2016 12:44:54 -0500 Subject: [PATCH] Mention that structs can contain &mut Ts Fixes #30254 --- src/doc/book/structs.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/doc/book/structs.md b/src/doc/book/structs.md index 1d70ee27869..75d0093b147 100644 --- a/src/doc/book/structs.md +++ b/src/doc/book/structs.md @@ -88,6 +88,35 @@ fn main() { } ``` +Your structure can still contain `&mut` pointers, which will let +you do some kinds of mutation: + +```rust +struct Point { + x: i32, + y: i32, +} + +struct PointRef<'a> { + x: &'a mut i32, + y: &'a mut i32, +} + +fn main() { + let mut point = Point { x: 0, y: 0 }; + + { + let r = PointRef { x: &mut point.x, y: &mut point.y }; + + *r.x = 5; + *r.y = 6; + } + + assert_eq!(5, point.x); + assert_eq!(6, point.y); +} +``` + # Update syntax A `struct` can include `..` to indicate that you want to use a copy of some