fn push_while_less(&mut self, other: &HashedLayer<K, L::Trie>, lower: usize, upper: usize, vs: &K) -> usize {

		let other_basis = other.lower(lower);	// from where in `other` the offsets do start.
		let self_basis = self.vals.boundary();	// from where in `self` the offsets must start.

		let mut bound = 0;	// tracks largest value of upper
		let mut index = lower;
		// let vs_hashed = vs.hashed();

		// stop if overrun, or if we find a valid element >= our target.
		while index < upper && !(other.keys[index].is_some() && &other.keys[index].key >= vs) {
			if other.upper(index) != 0 { 
				if bound < other.upper(index) { bound = other.upper(index); }
				debug_assert!(other.lower(index) < other.upper(index));
				let lower = (other.lower(index) + self_basis) - other_basis;
				let upper = (other.upper(index) + self_basis) - other_basis;
				self.temp.push(Entry::new(other.keys[index].key.clone(), lower, upper));
			}
			index += 1;
		}
		debug_assert!(bound > 0);
		self.vals.copy_range(&other.vals, other.lower(lower), bound);
	
		index - lower
	}
/// Moves other stuff into self.temp. Returns number of element consumed.
Moves other stuff into self.temp. Returns number of element consumed.
Moves other stuff into self . temp . Returns number of element consumed .
fn push_while_less(&mut self, other: &HashedLayer<K, L::Trie>, lower: usize, upper: usize, vs: &K) -> usize {
		let other_basis = other.lower(lower);	// from where in `other` the offsets do start.
		let self_basis = self.vals.boundary();	// from where in `self` the offsets must start.
		let mut bound = 0;	// tracks largest value of upper
		let mut index = lower;
		// let vs_hashed = vs.hashed();
		// stop if overrun, or if we find a valid element >= our target.
		while index < upper && !(other.keys[index].is_some() && &other.keys[index].key >= vs) {
			if other.upper(index) != 0 { 
				if bound < other.upper(index) { bound = other.upper(index); }
				debug_assert!(other.lower(index) < other.upper(index));
				let lower = (other.lower(index) + self_basis) - other_basis;
				let upper = (other.upper(index) + self_basis) - other_basis;
				self.temp.push(Entry::new(other.keys[index].key.clone(), lower, upper));
			}
			index += 1;
		}
		debug_assert!(bound > 0);
		self.vals.copy_range(&other.vals, other.lower(lower), bound);
		index - lower
	}
fn push_while_less ( & mut self , other : & HashedLayer < K , L :: Trie > , lower : usize , upper : usize , vs : & K ) -> usize { let other_basis = other . lower ( lower ) ; // from where in `other` the offsets do start. let self_basis = self . vals . boundary ( ) ; // from where in `self` the offsets must start. let mut bound = 0 ; // tracks largest value of upper let mut index = lower ; // let vs_hashed = vs.hashed(); // stop if overrun, or if we find a valid element >= our target. while index < upper && ! ( other . keys [ index ] . is_some ( ) && & other . keys [ index ] . key >= vs ) { if other . upper ( index ) != 0 { if bound < other . upper ( index ) { bound = other . upper ( index ) ; } debug_assert ! ( other lower ( index ) other upper ( index ) ) ; let lower = ( other . lower ( index ) + self_basis ) - other_basis ; let upper = ( other . upper ( index ) + self_basis ) - other_basis ; self . temp . push ( Entry :: new ( other . keys [ index ] . key . clone ( ) , lower , upper ) ) ; } index += 1 ; } debug_assert ! ( bound 0 ) ; self . vals . copy_range ( & other . vals , other . lower ( lower ) , bound ) ; index - lower }
Moves other stuff into self.temp.
Moves other stuff into self . temp .
&mut self
other
&HashedLayer<K, L::Trie>
lower
usize
upper
usize
vs
&K
&mut self
other
&HashedLayer<K, L::Trie>
lower
usize
upper
usize
vs
&K