Please keep in mind that the names of variables are just for illustrative purposes.
I have a struct that can be created from a vector of arbitrary w,x pairs, or y,z
usize pairs. Depending on which pair of variables it recieves, it will populate the struct in different ways. I'm aware of a few ways a user could pass in data, however they seem quite ugly.
I could create
from_yz methods of my struct which both accept
Vec<(usize, usize)> for the user to map their variables to. Or, rather than using my own "from" methods, i could implement
From on my struct for any type that implements
Into<YZPair>. That sounded great at first, being that I'm using the
From trait, but it didn't take long for me to ask myself why I'm creating arbitrary structs... Then finally, I thought the user could implement either the trait
HasYZ where they could map the variables to methods of those traits, and I could create different init methods according to which trait they had implemented. That sounded fine, except that I cannot make functionality for both the inclusion, and exclusion of a trait. So I would still end up with differently named
I know I'm thinking way too much into this, but what would be a preferable approach to this issue?