titlefmt/function/arithmetic/add/
mod.rs

1use 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;