auto merge of #14809 : zzmp/rust/patch-2, r=alexcrichton
Previously, the type system's restrictions on borrowing were summarized as > The previous example showed that the type system forbids any borrowing of owned boxes found in aliasable, mutable memory. This did not jive with the example, which allowed mutations so long as the borrowed reference had been returned. Also, the language has changed to no longer allow aliasable mutable locations. This changes the summary to read > The previous example showed that the type system forbids mutations of owned boxed values while they are being borrowed. In general, the type system also forbids borrowing a value as mutable if it is already being borrowed - either as a mutable reference or an immutable one. This adds more general information for the experienced reader as well, to offer a more complete understanding.
This commit is contained in:
commit
8b87c3a2a8
|
@ -275,8 +275,10 @@ invalidate the pointer `owner_age`.
|
||||||
|
|
||||||
# Borrowing and enums
|
# Borrowing and enums
|
||||||
|
|
||||||
The previous example showed that the type system forbids any borrowing
|
The previous example showed that the type system forbids any mutations
|
||||||
of owned boxes found in aliasable, mutable memory. This restriction
|
of owned boxed values while they are being borrowed. In general, the type
|
||||||
|
system also forbids borrowing a value as mutable if it is already being
|
||||||
|
borrowed - either as a mutable reference or an immutable one. This restriction
|
||||||
prevents pointers from pointing into freed memory. There is one other
|
prevents pointers from pointing into freed memory. There is one other
|
||||||
case where the compiler must be very careful to ensure that pointers
|
case where the compiler must be very careful to ensure that pointers
|
||||||
remain valid: pointers into the interior of an `enum`.
|
remain valid: pointers into the interior of an `enum`.
|
||||||
|
|
Loading…
Reference in New Issue