| //@ run-rustfix | |
| trait Trait {} | |
| impl Trait for () {} | |
| // this works | |
| fn foo() -> impl Trait { | |
| () | |
| } | |
| fn bar<T: Trait + std::marker::Sync>() -> impl Trait + std::marker::Sync + Send | |
| where | |
| T: Send, | |
| { | |
| () //~ ERROR mismatched types | |
| } | |
| fn other_bounds<T>() -> impl Trait | |
| where | |
| T: Trait, | |
| Vec<usize>: Clone, | |
| { | |
| () //~ ERROR mismatched types | |
| } | |
| fn main() { | |
| foo(); | |
| bar::<()>(); | |
| other_bounds::<()>(); | |
| } |