Skip to content

Fix pointer types in the manual. #16924

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Sep 2, 2014
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 8 additions & 20 deletions src/doc/rust.md
Original file line number Diff line number Diff line change
Expand Up @@ -3668,32 +3668,17 @@ let a: List<int> = Cons(7, box Cons(13, box Nil));

All pointers in Rust are explicit first-class values.
They can be copied, stored into data structures, and returned from functions.
There are four varieties of pointer in Rust:

* Owning pointers (`Box`)
: These point to owned heap allocations (or "boxes") in the shared, inter-task heap.
Each owned box has a single owning pointer; pointer and pointee retain a 1:1 relationship at all times.
Owning pointers are written `Box<content>`,
for example `Box<int>` means an owning pointer to an owned box containing an integer.
Copying an owned box is a "deep" operation:
it involves allocating a new owned box and copying the contents of the old box into the new box.
Releasing an owning pointer immediately releases its corresponding owned box.
There are two varieties of pointer in Rust:

* References (`&`)
: These point to memory _owned by some other value_.
References arise by (automatic) conversion from owning pointers, managed pointers,
or by applying the borrowing operator `&` to some other value,
including [lvalues, rvalues or temporaries](#lvalues,-rvalues-and-temporaries).
A borrow expression is written `&content`.

A reference type is written `&'f type` for some lifetime-variable `f`,
or just `&type` when the lifetime can be elided;
for example `&int` means a reference to an integer.
A reference type is written `&type` for some lifetime-variable `f`,
or just `&'a type` when you need an explicit lifetime.
Copying a reference is a "shallow" operation:
it involves only copying the pointer itself.
Releasing a reference typically has no effect on the value it points to,
with the exception of temporary values,
which are released when the last reference to them is released.
with the exception of temporary values, which are released when the last
reference to them is released.

* Raw pointers (`*`)
: Raw pointers are pointers without safety or liveness guarantees.
Expand All @@ -3706,6 +3691,9 @@ There are four varieties of pointer in Rust:
they exist to support interoperability with foreign code,
and writing performance-critical or low-level functions.

The standard library contains addtional 'smart pointer' types beyond references
and raw pointers.

### Function types

The function type constructor `fn` forms new function types.
Expand Down