blob: aa537dfc9176c2972fbc2adba1bdf63e5d9800b3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
#![feature(type_alias_impl_trait)]
use std::marker::PhantomData;
trait Trait {
fn foo<T, U>(t: T) -> U;
}
trait ProofForConversion<X> {
fn convert<T, U>(_: PhantomData<Self>, r: T) -> U;
}
impl<X: Trait> ProofForConversion<X> for () {
fn convert<T, U>(_: PhantomData<Self>, r: T) -> U {
X::foo(r)
}
}
type Converter<T> = impl ProofForConversion<T>;
fn _defining_use<T: Trait>() -> Converter<T> {
()
//~^ ERROR the trait bound `T: Trait` is not satisfied
}
fn main() {
}
|