hetseq 0.2.0

Defines traits and types to work with heterogenous sequences
Documentation
use {List, Queue};
pub use num::{Num, P, S, Z};

pub trait Length {
    type Length: Num;
    #[inline]
    fn len() -> usize { Self::Length::value() }
}

impl Length for List<()> {
    type Length = Z;
}

impl<H, T> Length for List<(H, T)>
    where T: Length
{
    type Length = S<<T as Length>::Length>;
}

impl Length for Queue<()> {
    type Length = Z;
}

impl<H, T> Length for Queue<(H, T)>
    where H: Length
{
    type Length = S<<H as Length>::Length>;
}