//@ check-pass | |
#![feature(impl_trait_in_assoc_type)] | |
trait SomeTrait {} | |
impl SomeTrait for () {} | |
trait MyFuture { | |
type Output; | |
} | |
impl<T> MyFuture for T { | |
type Output = T; | |
} | |
trait ReturnsFuture { | |
type Output: SomeTrait; | |
type Future: MyFuture<Output = Result<Self::Output, ()>>; | |
fn func() -> Self::Future; | |
} | |
struct Foo; | |
impl ReturnsFuture for Foo { | |
type Output = impl SomeTrait; | |
type Future = impl MyFuture<Output = Result<Self::Output, ()>>; | |
fn func() -> Self::Future { | |
Result::<(), ()>::Err(()) | |
} | |
} | |
fn main() {} |