pub fn demand(&self) -> HashSet<usize> {
        let mut demanded = HashSet::new();
        for (_index, pred) in self.predicates.iter() {
            demanded.extend(pred.support());
        }
        demanded.extend(self.projection.iter().cloned());
        for index in (0..self.expressions.len()).rev() {
            if demanded.contains(&(self.input_arity + index)) {
                demanded.extend(self.expressions[index].support());
            }
        }
        demanded.retain(|col| col < &self.input_arity);
        demanded
    }
/// Lists input columns whose values are used in outputs.
///
/// It is entirely appropriate to determine the demand of an instance
/// and then both apply a projection to the subject of the instance and
/// `self.permute` this instance.
Lists input columns whose values are used in outputs.
It is entirely appropriate to determine the demand of an instance
and then both apply a projection to the subject of the instance and
`self.permute` this instance.
Lists input columns whose values are used in outputs . It is entirely appropriate to determine the demand of an instance and then both apply a projection to the subject of the instance and ` self . permute ` this instance .
pub fn demand(&self) -> HashSet<usize> {
        let mut demanded = HashSet::new();
        for (_index, pred) in self.predicates.iter() {
            demanded.extend(pred.support());
        }
        demanded.extend(self.projection.iter().cloned());
        for index in (0..self.expressions.len()).rev() {
            if demanded.contains(&(self.input_arity + index)) {
                demanded.extend(self.expressions[index].support());
            }
        }
        demanded.retain(|col| col < &self.input_arity);
        demanded
    }
pub fn demand ( & self ) -> HashSet < usize > { let mut demanded = HashSet :: new ( ) ; for ( _index , pred ) in self . predicates . iter ( ) { demanded . extend ( pred . support ( ) ) ; } demanded . extend ( self . projection . iter ( ) . cloned ( ) ) ; for index in ( 0 .. self . expressions . len ( ) ) . rev ( ) { if demanded . contains ( & ( self . input_arity + index ) ) { demanded . extend ( self . expressions [ index ] . support ( ) ) ; } } demanded . retain ( | col | col < & self . input_arity ) ; demanded }
Lists input columns whose values are used in outputs.
Lists input columns whose values are used in outputs .
&self
&self