changeset 299:b9dab37389f3

merging_iter: Reduce # of allocations in find()
author Lewin Bormann <lbo@spheniscida.de>
date Wed, 27 Sep 2017 05:13:41 +0000
parents ace2e921f68d
children 8ed86e8a9a5e
files src/merging_iter.rs
diffstat 1 files changed, 3 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/merging_iter.rs	Tue Sep 26 20:12:12 2017 +0200
+++ b/src/merging_iter.rs	Wed Sep 27 05:13:41 2017 +0000
@@ -114,10 +114,11 @@
         }
 
         let mut next_ix = 0;
+        let (mut current, mut smallest, mut valscratch) = (vec![], vec![], vec![]);
 
         for i in 1..self.iters.len() {
-            if let Some((current, _)) = current_key_val(self.iters[i].as_ref()) {
-                if let Some((smallest, _)) = current_key_val(self.iters[next_ix].as_ref()) {
+            if self.iters[i].current(&mut current, &mut valscratch) {
+                if self.iters[next_ix].current(&mut smallest, &mut valscratch) {
                     if self.cmp.cmp(&current, &smallest) == ord {
                         next_ix = i;
                     }