Auto merge of #21995 - leejunseok:fix_invariant_ex, r=steveklabnik
Should fix #20147 This is my second PR in the history of ever (I botched my first one #21828). Any tips would be appreciated!
This commit is contained in:
commit
a08504bb35
1 changed files with 6 additions and 5 deletions
|
@ -311,16 +311,17 @@ impl<T: ?Sized> Clone for ContravariantType<T> {
|
||||||
///
|
///
|
||||||
/// # Example
|
/// # Example
|
||||||
///
|
///
|
||||||
/// The Cell type is an example which uses unsafe code to achieve
|
/// The Cell type is an example of an `InvariantType` which uses unsafe
|
||||||
/// "interior" mutability:
|
/// code to achieve "interior" mutability:
|
||||||
///
|
///
|
||||||
/// ```
|
/// ```
|
||||||
/// struct Cell<T> { value: T }
|
/// struct Cell<T> { value: T }
|
||||||
/// ```
|
/// ```
|
||||||
///
|
///
|
||||||
/// The type system would infer that `value` is only read here and
|
/// The type system would infer that `value` is only read here
|
||||||
/// never written, but in fact `Cell` uses unsafe code to achieve
|
/// and never written, but in fact `Cell` uses unsafe code to achieve
|
||||||
/// interior mutability.
|
/// interior mutability. In order to get correct behavior, the
|
||||||
|
/// `InvariantType` marker must be applied.
|
||||||
#[unstable(feature = "core",
|
#[unstable(feature = "core",
|
||||||
reason = "likely to change with new variance strategy")]
|
reason = "likely to change with new variance strategy")]
|
||||||
#[lang="invariant_type"]
|
#[lang="invariant_type"]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue