Merge commit '2f6439ae6a6803d030cceb3ee14c9150e91b328b' into clippyup
This commit is contained in:
@@ -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"
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user