summaryrefslogtreecommitdiff
path: root/src/assemblage.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/assemblage.rs')
-rw-r--r--src/assemblage.rs12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/assemblage.rs b/src/assemblage.rs
index 879cd3e..3433a76 100644
--- a/src/assemblage.rs
+++ b/src/assemblage.rs
@@ -5,17 +5,19 @@ use super::componentparameter::ComponentParameter;
use super::parameter::{Parameter, ParameterType};
use super::componentwrapper::{ComponentWrapper, ComponentType};
+type ArgumentDef = (String, ParameterType, Option<Parameter>);
+
#[derive(Debug, PartialEq, Clone)]
pub struct Assemblage {
- pub arguments: Vec<(String, ParameterType, Option<Parameter>)>,
+ pub arguments: Vec<ArgumentDef>,
pub components: Vec<(ComponentType, HashMap<String, ComponentParameter>)>
}
impl Assemblage {
- fn parse_definition_arguments(args: &Value) -> Result<Vec<(String, ParameterType, Option<Parameter>)>, &'static str> {
- let mut arguments: Vec<(String, ParameterType, Option<Parameter>)> = Vec::new();
+ fn parse_definition_arguments(args: &Value) -> Result<Vec<ArgumentDef>, &'static str> {
+ let mut arguments: Vec<ArgumentDef> = Vec::new();
for arg in args.as_array().ok_or("arguments is not an array")? {
let tup = arg.as_array().ok_or("argument is not an array")?;
let key = tup.get(0).ok_or("argument has no name")?.as_str().ok_or("argument name is not a string")?.to_string();
@@ -69,7 +71,7 @@ impl Assemblage {
Ok(assemblage)
}
- fn prepare_arguments(&self, args: &Vec<Parameter>, kwargs: &HashMap<String, Parameter>) -> Result<HashMap<&str, Parameter>, &'static str> {
+ fn prepare_arguments(&self, args: &[Parameter], kwargs: &HashMap<String, Parameter>) -> Result<HashMap<&str, Parameter>, &'static str> {
let mut arguments: HashMap<&str, Parameter> = HashMap::new();
for (idx, (name, typ, def)) in self.arguments.iter().enumerate() {
let value: Option<Parameter> = {
@@ -92,7 +94,7 @@ impl Assemblage {
Ok(arguments)
}
- pub fn instantiate(&self, args: &Vec<Parameter>, kwargs: &HashMap<String, Parameter>) -> Result<Vec<ComponentWrapper>, &'static str>{
+ pub fn instantiate(&self, args: &[Parameter], kwargs: &HashMap<String, Parameter>) -> Result<Vec<ComponentWrapper>, &'static str>{
let mut components: Vec<ComponentWrapper> = Vec::new();
let arguments = self.prepare_arguments(args, kwargs)?;
for (comptype, compparams) in &self.components {