pub fn atomic_multiply(&mut self, atomic: T) {
        if self.is_empty() {
            self.span.push(atomic);

            let mut row = BitVec::new();
            row.push(true);
            self.pits.push(row);
        } else if atomic > *self.span.last().unwrap() {
            self.span.push(atomic);

            for row in self.pits.iter_mut() {
                row.push(true);
            }
        } else {
            match self.span.binary_search(&atomic) {
                Ok(ndx) => {
                    if !self.is_singular() {
                        for row in self.pits.iter_mut() {
                            row.set(ndx, true);
                        }
                    }
                }
                Err(ndx) => {
                    let old_len = self.span.len();

                    self.span.insert(ndx, atomic);

                    for row in self.pits.iter_mut() {
                        row.push(false);

                        for i in ndx..old_len {
                            let bit = row.get(i).unwrap();
                            row.set(i + 1, bit);
                        }

                        row.set(ndx, true);
                    }
                }
            }
        }
    }
/// Multiplies this frame (all its pits) by a singleton pit.
Multiplies this frame (all its pits) by a singleton pit.
Multiplies this frame ( all its pits ) by a singleton pit .
pub fn atomic_multiply(&mut self, atomic: T) {
        if self.is_empty() {
            self.span.push(atomic);
            let mut row = BitVec::new();
            row.push(true);
            self.pits.push(row);
        } else if atomic > *self.span.last().unwrap() {
            self.span.push(atomic);
            for row in self.pits.iter_mut() {
                row.push(true);
            }
        } else {
            match self.span.binary_search(&atomic) {
                Ok(ndx) => {
                    if !self.is_singular() {
                        for row in self.pits.iter_mut() {
                            row.set(ndx, true);
                        }
                    }
                }
                Err(ndx) => {
                    let old_len = self.span.len();
                    self.span.insert(ndx, atomic);
                    for row in self.pits.iter_mut() {
                        row.push(false);
                        for i in ndx..old_len {
                            let bit = row.get(i).unwrap();
                            row.set(i + 1, bit);
                        }
                        row.set(ndx, true);
                    }
                }
            }
        }
    }
pub fn atomic_multiply ( & mut self , atomic : T ) { if self . is_empty ( ) { self . span . push ( atomic ) ; let mut row = BitVec :: new ( ) ; row . push ( true ) ; self . pits . push ( row ) ; } else if atomic > * self . span . last ( ) . unwrap ( ) { self . span . push ( atomic ) ; for row in self . pits . iter_mut ( ) { row . push ( true ) ; } } else { match self . span . binary_search ( & atomic ) { Ok ( ndx ) => { if ! self . is_singular ( ) { for row in self . pits . iter_mut ( ) { row . set ( ndx , true ) ; } } } Err ( ndx ) => { let old_len = self . span . len ( ) ; self . span . insert ( ndx , atomic ) ; for row in self . pits . iter_mut ( ) { row . push ( false ) ; for i in ndx .. old_len { let bit = row . get ( i ) . unwrap ( ) ; row . set ( i + 1 , bit ) ; } row . set ( ndx , true ) ; } } } } }
Multiplies this frame (all its pits) by a singleton pit.
Multiplies this frame ( all its pits ) by a singleton pit .
&mut self
atomic
T
&mut self
atomic
T