Get rid of some cloning

This commit is contained in:
David Zbarsky 2015-08-15 01:11:55 -04:00
parent dcac654057
commit 53e8f7d823

View file

@ -502,9 +502,8 @@ pub mod specified {
} }
fn simplify_sum_to_number(node: &CalcSumNode) -> Option<CSSFloat> { fn simplify_sum_to_number(node: &CalcSumNode) -> Option<CSSFloat> {
let node = node.clone();
let mut sum = 0.; let mut sum = 0.;
for product in node.products { for product in &node.products {
match Calc::simplify_product_to_number(product) { match Calc::simplify_product_to_number(product) {
Some(number) => sum += number, Some(number) => sum += number,
_ => return None _ => return None
@ -513,10 +512,10 @@ pub mod specified {
Some(sum) Some(sum)
} }
fn simplify_product_to_number(node: CalcProductNode) -> Option<CSSFloat> { fn simplify_product_to_number(node: &CalcProductNode) -> Option<CSSFloat> {
let mut product = 1.; let mut product = 1.;
for value in node.values { for value in &node.values {
match Calc::simplify_value_to_number(&value) { match Calc::simplify_value_to_number(value) {
Some(number) => product *= number, Some(number) => product *= number,
_ => return None _ => return None
} }
@ -526,8 +525,7 @@ pub mod specified {
fn simplify_products_in_sum(node: &CalcSumNode) -> Result<SimplifiedValueNode, ()> { fn simplify_products_in_sum(node: &CalcSumNode) -> Result<SimplifiedValueNode, ()> {
let mut simplified = Vec::new(); let mut simplified = Vec::new();
let node = node.clone(); for product in &node.products {
for product in node.products {
match try!(Calc::simplify_product(product)) { match try!(Calc::simplify_product(product)) {
SimplifiedValueNode::Sum(box sum) => simplified.push_all(&sum.values), SimplifiedValueNode::Sum(box sum) => simplified.push_all(&sum.values),
val => simplified.push(val), val => simplified.push(val),