titlefmt/function/arithmetic/add/
mod.rs1use super::Error;
2use expression::{Evaluation, Expression, Value};
3use metadata;
4
5pub fn add<T: metadata::Provider>(
6 expressions: &[Box<Expression<T>>],
7 provider: &T,
8) -> Result<Evaluation, Error> {
9 let mut result: i32 = 0;
10 let mut truth = false;
11 for expr in expressions.iter() {
12 if let Some((i, expr_truth)) = try_integer_result!(expr, provider) {
13 truth |= expr_truth;
14 result += i;
15 }
16 }
17 Ok(Evaluation::new(Value::Integer(result), truth))
18}
19
20#[cfg(test)]
21mod test;