Skip to content
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

Detect when method call on argument could be removed to fulfill failed trait bound #121100

Merged
merged 1 commit into from
Feb 18, 2024

Commits on Feb 16, 2024

  1. Detect when method call on argument could be removed to fulfill faile…

    …d trait bound
    
    When encountering
    
    ```rust
    struct Foo;
    struct Bar;
    impl From<Bar> for Foo {
        fn from(_: Bar) -> Self { Foo }
    }
    fn qux(_: impl From<Bar>) {}
    fn main() {
        qux(Bar.into());
    }
    ```
    
    Suggest removing `.into()`:
    
    ```
    error[E0283]: type annotations needed
     --> f100.rs:8:13
      |
    8 |     qux(Bar.into());
      |     ---     ^^^^
      |     |
      |     required by a bound introduced by this call
      |
      = note: cannot satisfy `_: From<Bar>`
    note: required by a bound in `qux`
     --> f100.rs:6:16
      |
    6 | fn qux(_: impl From<Bar>) {}
      |                ^^^^^^^^^ required by this bound in `qux`
    help: try using a fully qualified path to specify the expected types
      |
    8 |     qux(<Bar as Into<T>>::into(Bar));
      |         +++++++++++++++++++++++   ~
    help: consider removing this method call, as the receiver has type `Bar` and `Bar: From<Bar>` can be fulfilled
      |
    8 -     qux(Bar.into());
    8 +     qux(Bar);
      |
    ```
    
    Fix rust-lang#71252
    estebank committed Feb 16, 2024
    Configuration menu
    Copy the full SHA
    9b3fcf9 View commit details
    Browse the repository at this point in the history