Skip to content

Commit 310ada0

Browse files
author
Junseok Lee
committed
added example back in, with a modified, (hopefully) improved description
1 parent b6544fd commit 310ada0

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

src/libcore/marker.rs

+14
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,20 @@ impl<T: ?Sized> Clone for ContravariantType<T> {
308308
///
309309
/// For more information about variance, refer to this Wikipedia
310310
/// article <http://en.wikipedia.org/wiki/Variance_%28computer_science%29>.
311+
///
312+
/// # Example
313+
///
314+
/// The Cell type is an example of an `InvariantType` which uses unsafe
315+
/// code to achieve "interior" mutability:
316+
///
317+
/// ```
318+
/// struct Cell<T> { value: T }
319+
/// ```
320+
///
321+
/// The type system would infer that `value` is only read here
322+
/// and never written, but in fact `Cell` uses unsafe code to achieve
323+
/// interior mutability. In order to get correct behavior, the
324+
/// `InvariantType` marker must be applied.
311325
#[unstable(feature = "core",
312326
reason = "likely to change with new variance strategy")]
313327
#[lang="invariant_type"]

0 commit comments

Comments
 (0)