From 71b8b04f48a3c596a50d78405eb5b0eea80ad8e6 Mon Sep 17 00:00:00 2001 From: Steve Klabnik Date: Tue, 25 Nov 2014 10:57:17 -0500 Subject: [PATCH] Make note about cross-borrowing. Fixes #19302. --- src/doc/guide-pointers.md | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/doc/guide-pointers.md b/src/doc/guide-pointers.md index cf7ecd7e51ff7..64b440259cf2c 100644 --- a/src/doc/guide-pointers.md +++ b/src/doc/guide-pointers.md @@ -445,11 +445,32 @@ fn succ(x: &int) -> int { *x + 1 } to ```{rust} +use std::rc::Rc; + fn box_succ(x: Box) -> int { *x + 1 } -fn rc_succ(x: std::rc::Rc) -> int { *x + 1 } +fn rc_succ(x: Rc) -> int { *x + 1 } +``` + +Note that the caller of your function will have to modify their calls slightly: + +```{rust} +use std::rc::Rc; + +fn succ(x: &int) -> int { *x + 1 } + +let ref_x = &5i; +let box_x = box 5i; +let rc_x = Rc::new(5i); + +succ(ref_x); +succ(&*box_x); +succ(&*rc_x); ``` +The initial `*` dereferences the pointer, and then `&` takes a reference to +those contents. + # Boxes `Box` is Rust's 'boxed pointer' type. Boxes provide the simplest form of