Merge commit '2f6439ae6a6803d030cceb3ee14c9150e91b328b' into clippyup

This commit is contained in:
flip1995
2020-10-09 12:45:29 +02:00
parent adb7fc6283
commit fbf2430f02
109 changed files with 1502 additions and 616 deletions

View File

@@ -69,7 +69,27 @@ declare_clippy_lint! {
/// **Why is this bad?** Byte string literals (e.g., `b"foo"`) can be used
/// instead. They are shorter but less discoverable than `as_bytes()`.
///
/// **Known Problems:** None.
/// **Known Problems:**
/// `"str".as_bytes()` and the suggested replacement of `b"str"` are not
/// equivalent because they have different types. The former is `&[u8]`
/// while the latter is `&[u8; 3]`. That means in general they will have a
/// different set of methods and different trait implementations.
///
/// ```compile_fail
/// fn f(v: Vec<u8>) {}
///
/// f("...".as_bytes().to_owned()); // works
/// f(b"...".to_owned()); // does not work, because arg is [u8; 3] not Vec<u8>
///
/// fn g(r: impl std::io::Read) {}
///
/// g("...".as_bytes()); // works
/// g(b"..."); // does not work
/// ```
///
/// The actual equivalent of `"str".as_bytes()` with the same type is not
/// `b"str"` but `&b"str"[..]`, which is a great deal of punctuation and not
/// more readable than a function call.
///
/// **Example:**
/// ```rust
@@ -80,7 +100,7 @@ declare_clippy_lint! {
/// let bs = b"a byte string";
/// ```
pub STRING_LIT_AS_BYTES,
style,
nursery,
"calling `as_bytes` on a string literal instead of using a byte string literal"
}