I don't really know how to word the question.
My question is, is there a way to rewrite this so it compiled without needing to use PhantomData
?
trait Foo {}
trait Bar<F: Foo> {}
struct Baz<F: Foo, B: Bar<F>> {
bar: B,
}
I don't really know how to word the question.
My question is, is there a way to rewrite this so it compiled without needing to use PhantomData
?
trait Foo {}
trait Bar<F: Foo> {}
struct Baz<F: Foo, B: Bar<F>> {
bar: B,
}
Don't put type bounds on struct definitions.
trait Foo {}
trait Bar {
type F: Foo;
}
struct Baz<B> {
bar: B,
}
impl<F: Foo, B: Bar<F = F>> Baz<B> {
...
}
In this case, you probably also want F
to be an associated type rather than a generic parameter. If F
can't be an associated type, then you would need to say more about how you use the trait.