[dice] Optimize iteration handling in dice::execute_steps

To avoid unnecessary vector collect in the process.

Bug: 267575445
Test: atest diced_utils_test diced_sample_inputs_test \
diced_test diced_vendor_test

Change-Id: I5b78dad7394e6ca88e238ef5806dd574da083657
diff --git a/diced/src/resident_node.rs b/diced/src/resident_node.rs
index 99a6dc9..0bd5d0d 100644
--- a/diced/src/resident_node.rs
+++ b/diced/src/resident_node.rs
@@ -24,7 +24,7 @@
 use anyhow::{Context, Result};
 use dice::{ContextImpl, OpenDiceCborContext};
 use diced_open_dice_cbor as dice;
-use diced_utils::{self as utils, InputValues, ResidentArtifacts};
+use diced_utils::{self as utils, ResidentArtifacts};
 use std::collections::HashMap;
 use std::convert::TryInto;
 use std::sync::RwLock;
@@ -61,17 +61,12 @@
 
         let client_arr = [client];
 
-        let input_values: Vec<utils::InputValues> = demotion_db
+        let input_values = demotion_db
             .get(&client_arr[0])
             .map(|v| v.iter())
             .unwrap_or_else(|| client_arr.iter())
-            .chain(input_values.iter())
-            .map(|v| v.into())
-            .collect();
-
-        artifacts
-            .execute_steps(input_values.iter().map(|v| v as &dyn dice::InputValues))
-            .context("In get_effective_artifacts:")
+            .chain(input_values.iter());
+        artifacts.execute_steps(input_values).context("In get_effective_artifacts:")
     }
 }
 
@@ -173,18 +168,10 @@
     fn demote_self(&self, input_values: &[BinderInputValues]) -> Result<()> {
         let mut artifacts = self.artifacts.write().unwrap();
 
-        let input_values = input_values
-            .iter()
-            .map(|v| {
-                v.try_into().with_context(|| format!("Failed to convert input values: {:#?}", v))
-            })
-            .collect::<Result<Vec<InputValues>>>()
-            .context("In ResidentNode::demote_self:")?;
-
         *artifacts = artifacts
             .try_clone()
             .context("In ResidentNode::demote_self: Failed to clone resident artifacts")?
-            .execute_steps(input_values.iter().map(|v| v as &dyn dice::InputValues))
+            .execute_steps(input_values)
             .context("In ResidentNode::demote_self:")?;
         Ok(())
     }