trait Coroutine { fn create() -> u32; } struct Impl; impl Coroutine for Impl { fn create() -> u32 { 1 } } impl Impl { fn new() -> Self { Impl{} } } impl Into for Impl { fn into(self) -> u32 { 1 } } fn foo(bar: u32) {} struct AnotherImpl; impl Coroutine for AnotherImpl { fn create() -> u32 { 2 } } fn main() { let cont: u32 = Coroutine::create(); //~ ERROR E0790 } fn buzz() { let foo_impl = Impl::new(); let bar = foo_impl.into() * 1u32; //~ ERROR E0283 foo(bar); }