-
Notifications
You must be signed in to change notification settings - Fork 13.3k
Implement AsRef<ByteStr>
for [u8]
#139441
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
This comment has been minimized.
This comment has been minimized.
This impl was omitted from rust-lang#135073 due to inference failures. Add it separately to judge its impact.
0e7022a
to
3317391
Compare
Some changes occurred in src/tools/clippy cc @rust-lang/clippy |
The job Click to see the possible cause of the failure (guessed by this bot)
|
The failure is now from inference failures in external crates. |
I believe the signature of the constructor was originally generic over `AsRef<[u8]>`, but it got changed to be concrete. However, the implementation continued calling `as_ref()` unnecessarily. This looks harmless, but exposes us to inference failures. Ref rust-lang/rust#139441
If you are looking for a crater run on this PR, we'll need a green build first before that can be kicked off. Please try updating error[E0283]: type annotations needed
--> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/jiff-0.2.5/src/shared/posix.rs:26:42
|
26 | Parser { ianav3plus: true, ..Parser::new(bytes.as_ref()) };
| ^^^^^^^^^^^ -------------- type must be known at this point
| |
| cannot infer type of the type parameter `B` declared on the associated function `new`
|
= note: multiple `impl`s satisfying `_: AsRef<[u8]>` found in the following crates: `alloc`, `core`:
- impl AsRef<[u8]> for ByteStr;
- impl AsRef<[u8]> for ByteString;
- impl AsRef<[u8]> for String;
- impl AsRef<[u8]> for str;
note: required by a bound in `shared::posix::Parser::<'s>::new`
--> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/jiff-0.2.5/src/shared/posix.rs:602:24
|
602 | fn new<B: ?Sized + AsRef<[u8]>>(tz: &'s B) -> Parser<'s> {
| ^^^^^^^^^^^ required by this bound in `Parser::<'s>::new`
help: consider specifying the generic argument
|
26 | Parser { ianav3plus: true, ..Parser::new::<B>(bytes.as_ref()) };
| +++++
help: consider removing this method call, as the receiver has type `&[u8]` and `&[u8]: AsRef<[u8]>` trivially holds
|
26 - Parser { ianav3plus: true, ..Parser::new(bytes.as_ref()) };
26 + Parser { ianav3plus: true, ..Parser::new(bytes) };
| |
This impl was omitted from #135073 due to inference failures. Add it separately to judge its impact.
Tracked in #139429.
r? libs-api
cc @joshtriplett