Auto merge of #6090 - Fishrock123:rc_buffer-formatting-caveats, r=yaahc

lints: clarify rc_buffer and add caveats

This didn't display some types properly in the docs due the lack of code formatting.

Also, refs for the caveat:
https://github.com/rust-lang/rust-clippy/pull/6044#issuecomment-699559082
https://github.com/http-rs/surf/pull/242

Fwiw I can't get `cargo test` to run, even on nightly. I get:
```
error[E0463]: can't find crate for `rustc_ast`
```

*Please keep the line below*
changelog: none, nightly
This commit is contained in:
bors 2020-09-27 00:38:23 +00:00
commit 949b834067

View file

@ -216,18 +216,19 @@ declare_clippy_lint! {
} }
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 /// **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>. /// 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 /// 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 /// 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 /// 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. /// 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:** /// **Example:**
/// ```rust,ignore /// ```rust,ignore