| // Ensure that the compiler include the blanklet implementation suggestion |
| // when inside a `impl` statement are used two local traits. |
| // |
| //@ edition:2021 |
| use std::fmt; |
| |
| trait LocalTraitOne { } |
| |
| trait LocalTraitTwo { } |
| |
| trait GenericTrait<T> {} |
| |
| impl LocalTraitTwo for LocalTraitOne {} |
| //~^ ERROR expected a type, found a trait |
| //~| HELP you can add the `dyn` keyword if you want a trait object |
| //~| HELP alternatively use a blanket implementation to implement `LocalTraitTwo` for all types that also implement `LocalTraitOne` |
| |
| impl fmt::Display for LocalTraitOne { |
| //~^ ERROR expected a type, found a trait |
| //~| HELP you can add the `dyn` keyword if you want a trait object |
| fn fmt(&self, _f: &mut fmt::Formatter<'_>) -> fmt::Result { |
| todo!(); |
| } |
| } |
| |
| impl fmt::Display for LocalTraitTwo + Send { |
| //~^ ERROR expected a type, found a trait |
| //~| HELP you can add the `dyn` keyword if you want a trait object |
| fn fmt(&self, _f: &mut fmt::Formatter<'_>) -> fmt::Result { |
| todo!(); |
| } |
| } |
| |
| impl LocalTraitOne for fmt::Display {} |
| //~^ ERROR expected a type, found a trait |
| //~| HELP you can add the `dyn` keyword if you want a trait object |
| //~| HELP alternatively use a blanket implementation to implement `LocalTraitOne` for all types that also implement `fmt::Display` |
| |
| |
| impl LocalTraitOne for fmt::Display + Send {} |
| //~^ ERROR expected a type, found a trait |
| //~| HELP you can add the `dyn` keyword if you want a trait object |
| //~| HELP alternatively use a blanket implementation to implement `LocalTraitOne` for all types that also implement `fmt::Display + Send` |
| |
| |
| impl<E> GenericTrait<E> for LocalTraitOne {} |
| //~^ ERROR expected a type, found a trait |
| //~| HELP you can add the `dyn` keyword if you want a trait object |
| //~| HELP alternatively use a blanket implementation to implement `GenericTrait<E>` for all types that also implement `LocalTraitOne` |
| |
| trait GenericTraitTwo<T> {} |
| |
| impl<T, E> GenericTraitTwo<E> for GenericTrait<T> {} |
| //~^ ERROR expected a type, found a trait |
| //~| HELP you can add the `dyn` keyword if you want a trait object |
| //~| HELP alternatively use a blanket implementation to implement `GenericTraitTwo<E>` for all types that also implement `GenericTrait<T>` |
| |
| fn main() {} |