pub fn scalars(&self) -> Vec<&Scalar> {
        let mut scalars: Vec<&Scalar> = Vec::new();
        match *self {
            Expression::Scalar(ref scalar) => scalars.push(scalar),
            Expression::Constant(_) => {}
            Expression::Add(ref lhs, ref rhs)
            | Expression::Sub(ref lhs, ref rhs)
            | Expression::Mul(ref lhs, ref rhs)
            | Expression::Divu(ref lhs, ref rhs)
            | Expression::Modu(ref lhs, ref rhs)
            | Expression::Divs(ref lhs, ref rhs)
            | Expression::Mods(ref lhs, ref rhs)
            | Expression::And(ref lhs, ref rhs)
            | Expression::Or(ref lhs, ref rhs)
            | Expression::Xor(ref lhs, ref rhs)
            | Expression::Shl(ref lhs, ref rhs)
            | Expression::Shr(ref lhs, ref rhs)
            | Expression::Cmpeq(ref lhs, ref rhs)
            | Expression::Cmpneq(ref lhs, ref rhs)
            | Expression::Cmplts(ref lhs, ref rhs)
            | Expression::Cmpltu(ref lhs, ref rhs) => {
                scalars.append(&mut lhs.scalars());
                scalars.append(&mut rhs.scalars());
            }
            #[cfg(feature = "il-expression-ashr")]
            Expression::AShr(ref lhs, ref rhs) => {
                scalars.append(&mut lhs.scalars());
                scalars.append(&mut rhs.scalars());
            }
            Expression::Zext(_, ref rhs)
            | Expression::Sext(_, ref rhs)
            | Expression::Trun(_, ref rhs) => {
                scalars.append(&mut rhs.scalars());
            }
            Expression::Ite(ref cond, ref then, ref else_) => {
                scalars.append(&mut cond.scalars());
                scalars.append(&mut then.scalars());
                scalars.append(&mut else_.scalars());
            }
        }
        scalars
    }
/// Returns all `Scalars` used in this `Expression`
Returns all `Scalars` used in this `Expression`
Returns all ` Scalars ` used in this ` Expression `
pub fn scalars(&self) -> Vec<&Scalar> {
        let mut scalars: Vec<&Scalar> = Vec::new();
        match *self {
            Expression::Scalar(ref scalar) => scalars.push(scalar),
            Expression::Constant(_) => {}
            Expression::Add(ref lhs, ref rhs)
            | Expression::Sub(ref lhs, ref rhs)
            | Expression::Mul(ref lhs, ref rhs)
            | Expression::Divu(ref lhs, ref rhs)
            | Expression::Modu(ref lhs, ref rhs)
            | Expression::Divs(ref lhs, ref rhs)
            | Expression::Mods(ref lhs, ref rhs)
            | Expression::And(ref lhs, ref rhs)
            | Expression::Or(ref lhs, ref rhs)
            | Expression::Xor(ref lhs, ref rhs)
            | Expression::Shl(ref lhs, ref rhs)
            | Expression::Shr(ref lhs, ref rhs)
            | Expression::Cmpeq(ref lhs, ref rhs)
            | Expression::Cmpneq(ref lhs, ref rhs)
            | Expression::Cmplts(ref lhs, ref rhs)
            | Expression::Cmpltu(ref lhs, ref rhs) => {
                scalars.append(&mut lhs.scalars());
                scalars.append(&mut rhs.scalars());
            }
            #[cfg(feature = "il-expression-ashr")]
            Expression::AShr(ref lhs, ref rhs) => {
                scalars.append(&mut lhs.scalars());
                scalars.append(&mut rhs.scalars());
            }
            Expression::Zext(_, ref rhs)
            | Expression::Sext(_, ref rhs)
            | Expression::Trun(_, ref rhs) => {
                scalars.append(&mut rhs.scalars());
            }
            Expression::Ite(ref cond, ref then, ref else_) => {
                scalars.append(&mut cond.scalars());
                scalars.append(&mut then.scalars());
                scalars.append(&mut else_.scalars());
            }
        }
        scalars
    }
pub fn scalars ( & self ) -> Vec < & Scalar > { let mut scalars : Vec < & Scalar > = Vec :: new ( ) ; match * self { Expression :: Scalar ( ref scalar ) => scalars . push ( scalar ) , Expression :: Constant ( _ ) => { } Expression :: Add ( ref lhs , ref rhs ) | Expression :: Sub ( ref lhs , ref rhs ) | Expression :: Mul ( ref lhs , ref rhs ) | Expression :: Divu ( ref lhs , ref rhs ) | Expression :: Modu ( ref lhs , ref rhs ) | Expression :: Divs ( ref lhs , ref rhs ) | Expression :: Mods ( ref lhs , ref rhs ) | Expression :: And ( ref lhs , ref rhs ) | Expression :: Or ( ref lhs , ref rhs ) | Expression :: Xor ( ref lhs , ref rhs ) | Expression :: Shl ( ref lhs , ref rhs ) | Expression :: Shr ( ref lhs , ref rhs ) | Expression :: Cmpeq ( ref lhs , ref rhs ) | Expression :: Cmpneq ( ref lhs , ref rhs ) | Expression :: Cmplts ( ref lhs , ref rhs ) | Expression :: Cmpltu ( ref lhs , ref rhs ) => { scalars . append ( & mut lhs . scalars ( ) ) ; scalars . append ( & mut rhs . scalars ( ) ) ; } # [ cfg ( feature " " ) ] Expression :: AShr ( ref lhs , ref rhs ) => { scalars . append ( & mut lhs . scalars ( ) ) ; scalars . append ( & mut rhs . scalars ( ) ) ; } Expression :: Zext ( _ , ref rhs ) | Expression :: Sext ( _ , ref rhs ) | Expression :: Trun ( _ , ref rhs ) => { scalars . append ( & mut rhs . scalars ( ) ) ; } Expression :: Ite ( ref cond , ref then , ref else_ ) => { scalars . append ( & mut cond . scalars ( ) ) ; scalars . append ( & mut then . scalars ( ) ) ; scalars . append ( & mut else_ . scalars ( ) ) ; } } scalars }
Returns all `Scalars` used in this `Expression`
Returns all ` Scalars ` used in this ` Expression `
&self
&self