bitvek 0.3.8

A simple bit vector implementation.
Documentation
use crate::BitVec;

impl Extend<bool> for BitVec {
    fn extend<I>(&mut self, iter: I)
    where
        I: IntoIterator<Item = bool>,
    {
        let iter = iter.into_iter();
        let new_len_lower_limit = self
            .len
            .checked_add(iter.size_hint().0)
            .expect("capacity overflow");
        let additional = Self::words_required(new_len_lower_limit) - self.data.len();
        self.data.reserve(additional);
        for value in iter {
            self.push(value);
        }
    }
}

#[cfg(test)]
mod tests {
    use crate::bitvec;
    use core::iter::repeat_n;

    #[test]
    fn test_extend() {
        let mut vec = bitvec![true, false];
        vec.extend([true, false]);
        assert_eq!(vec, bitvec![true, false, true, false]);
    }

    #[test]
    #[should_panic]
    fn test_extend_fail() {
        let mut vec = bitvec![true, false];
        vec.extend(repeat_n(true, usize::MAX));
    }
}