diff --git a/datafusion/expr/src/tree_node.rs b/datafusion/expr/src/tree_node.rs index 06b60947cf9a..90d61bf63763 100644 --- a/datafusion/expr/src/tree_node.rs +++ b/datafusion/expr/src/tree_node.rs @@ -404,11 +404,11 @@ pub fn transform_sort_vec Result>>( pub fn replace_sort_expressions(sorts: Vec, new_expr: Vec) -> Vec { assert_eq!(sorts.len(), new_expr.len()); - let mut new_sorts = Vec::with_capacity(sorts.len()); - for (i, expr) in new_expr.into_iter().enumerate() { - new_sorts.push(replace_sort_expression(sorts[i].clone(), expr)); - } - new_sorts + sorts + .into_iter() + .zip(new_expr) + .map(|(sort, expr)| replace_sort_expression(sort, expr)) + .collect() } pub fn replace_sort_expression(sort: Sort, new_expr: Expr) -> Sort {