Impl Trait as field type

I have a function taking impl MyTrait as parameter:

fn create_struct(t: impl MyTrait) -> MyStruct {
    MyStruct {
        field: t
    }
}

What is the type of field? As we can't use impl MyTrait in a struct field

You would need a generic struct.

struct MyStruct<T> {
    field: T, 
} 
fn create_struct<T: MyTrait>(t: T) -> MyStruct<T> {
    MyStruct { field: t }
} 

Yes of course, just (re)read this part of the book: https://doc.rust-lang.org/book/ch10-02-traits.html#trait-bound-syntax

it's just syntax sugar for generic so yes, I need generic for my struct too.

Ta!

This topic was automatically closed 90 days after the last reply. We invite you to open a new topic if you have further questions or comments.