-
Notifications
You must be signed in to change notification settings - Fork 28
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Generics programming using soa-derive #66
Comments
I made some progress in realizing the type refers to the derived pub struct SparseSet<T: StructOfArray> {
dense: Vec<EntID>,
sparse: Vec<u32>,
data: <T as StructOfArray>::Type,
} However, this still will not allow me to have generic implementations, as the following errors: pub fn new() -> Self {
Self {
dense: Vec::new(),
sparse: Vec::new(),
data: <T as StructOfArray>::Type::new(),
}
}
Do I have any alternatives? Any trait that implements the methods I need, so that I can have generic implementations? |
I see, I did find that PR, that commit was what helped me figure out part of it. If @mikialex can let me know if they've ever done generic implementations using their contribution, that would be really helpful. Otherwise I suppose I will look for an alternative, macros perhaps. |
Hi, apologies for not being able to infer this from the documentation and code, I am not very experienced with these topics. Also, sorry if I get any terms wrong, either way, my question is the following:
Say I have a generic struct that is meant to include various types of SoAs. What trait bounds am I meant to use? Should T be a
Cheese
or aCheeseVec
?From my understanding of the documentation, you are meant to apply the trait bound
StructOfArray
, makingT
aCheeseVec
. However, that trait does not implement the usual methods (insert, pop, etc.), which would mean I can't do generic implementations. Is that the case, or did I miss something?If T is a SoA, how do I get the original type, for declaring function parameter types? For example, the function
get
makes use of thesparse
array to determine if an entity exists, after which it's meant to return the associated data, in this case aCheese
. What should?
be here, i.e. how do I getCheese
fromCheeseVec
in a generic way?Thank you.
The text was updated successfully, but these errors were encountered: