How can you get the number of elements in a tuple?

I mean, to do it properly would be to create a generic trait for each length of tuple up to 12 so it ends up being a compile time value.

E.g.:

trait TupleLen {
    fn len(&self) -> usize;
}

impl<T1> TupleLen for (T1,) {
    fn len(&self) -> usize { 1 }
}
impl<T1,T2> TupleLen for (T1,T2) {
    fn len(&self) -> usize { 2 }
}
impl<T1,T2,T3> TupleLen for (T1,T2,T3) {
    fn len(&self) -> usize { 3 }
}
impl<T1,T2,T3,T4> TupleLen for (T1,T2,T3,T4) {
    fn len(&self) -> usize { 4 }
}
// etc, etc. Creating a macro would be less repetitive

However, I wouldn't advocate doing this.

7 Likes