Skip to content

Commit

Permalink
lints: clarify rc_buffer and add caveats
Browse files Browse the repository at this point in the history
This didn't display some types properly in the docs due the lack of code formatting.

Also, refs for the caveat:
rust-lang/rust-clippy#6044 (comment)
http-rs/surf#242
  • Loading branch information
Fishrock123 committed Sep 27, 2020
1 parent ea079eb commit 00e641b
Showing 1 changed file with 8 additions and 7 deletions.
15 changes: 8 additions & 7 deletions clippy_lints/src/types.rs
Expand Up @@ -216,18 +216,19 @@ declare_clippy_lint! {
}

declare_clippy_lint! {
/// **What it does:** Checks for Rc<T> and Arc<T> when T is a mutable buffer type such as String or Vec
/// **What it does:** Checks for `Rc<T>` and `Arc<T>` when `T` is a mutable buffer type such as `String` or `Vec`.
///
/// **Why is this bad?** Expressions such as Rc<String> have no advantage over Rc<str>, since
/// it is larger and involves an extra level of indirection, and doesn't implement Borrow<str>.
/// **Why is this bad?** Expressions such as `Rc<String>` usually have no advantage over `Rc<str>`, since
/// it is larger and involves an extra level of indirection, and doesn't implement `Borrow<str>`.
///
/// While mutating a buffer type would still be possible with Rc::get_mut(), it only
/// works if there are no additional references yet, which defeats the purpose of
/// While mutating a buffer type would still be possible with `Rc::get_mut()`, it only
/// works if there are no additional references yet, which usually defeats the purpose of
/// enclosing it in a shared ownership type. Instead, additionally wrapping the inner
/// type with an interior mutable container (such as RefCell or Mutex) would normally
/// type with an interior mutable container (such as `RefCell` or `Mutex`) would normally
/// be used.
///
/// **Known problems:** None.
/// **Known problems:** This pattern can be desirable to avoid the overhead of a `RefCell` or `Mutex` for
/// cases where mutation only happens before there are any additional references.
///
/// **Example:**
/// ```rust,ignore
Expand Down

0 comments on commit 00e641b

Please sign in to comment.