### What it does
Checks for the `as_bytes` method called on string literals
that contain only ASCII characters.

### 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
`"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.

```
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
```
let bstr = "a byte string".as_bytes();
```

Use instead:
```
let bstr = b"a byte string";
```