mirror of
https://github.com/rust-lang/rust.git
synced 2024-12-16 18:44:56 +00:00
Update documentation for mut_from_ref
This commit is contained in:
parent
ddd3af2273
commit
19054251d3
@ -89,19 +89,26 @@ declare_clippy_lint! {
|
||||
|
||||
declare_clippy_lint! {
|
||||
/// ### What it does
|
||||
/// This lint checks for functions that take immutable
|
||||
/// references and return mutable ones.
|
||||
/// This lint checks for functions that take immutable references and return
|
||||
/// mutable ones. This will not trigger if no unsafe code exists as there
|
||||
/// are multiple safe functions which will do this transformation
|
||||
///
|
||||
/// To be on the conservative side, if there's at least one mutable
|
||||
/// reference with the output lifetime, this lint will not trigger.
|
||||
///
|
||||
/// ### Why is this bad?
|
||||
/// This is trivially unsound, as one can create two
|
||||
/// mutable references from the same (immutable!) source.
|
||||
/// This [error](https://github.com/rust-lang/rust/issues/39465)
|
||||
/// actually lead to an interim Rust release 1.15.1.
|
||||
/// Creating a mutable reference which can be repeatably derived from an
|
||||
/// immutable reference is unsound as it allows creating multiple live
|
||||
/// mutable references to the same object.
|
||||
///
|
||||
/// This [error](https://github.com/rust-lang/rust/issues/39465) actually
|
||||
/// lead to an interim Rust release 1.15.1.
|
||||
///
|
||||
/// ### Known problems
|
||||
/// To be on the conservative side, if there's at least one
|
||||
/// mutable reference with the output lifetime, this lint will not trigger.
|
||||
/// In practice, this case is unlikely anyway.
|
||||
/// This pattern is used by memory allocators to allow allocating multiple
|
||||
/// objects while returning mutable references to each one. So long as
|
||||
/// different mutable references are returned each time such a function may
|
||||
/// be safe.
|
||||
///
|
||||
/// ### Example
|
||||
/// ```ignore
|
||||
|
Loading…
Reference in New Issue
Block a user