diff --git a/gemla/src/bracket/mod.rs b/gemla/src/bracket/mod.rs index 87a47c5..57eef90 100644 --- a/gemla/src/bracket/mod.rs +++ b/gemla/src/bracket/mod.rs @@ -25,23 +25,15 @@ impl tree::Tree { /// Constructs a tree with a given height while simultaneously running a simulation on each node. fn build_tree(h: u32) -> Option>> { - let mut result: Option>> = None; - // Recursively building a tree and running the simulation after wards to ensure a bottom-up // execution order. if h != 0 { - result = Some(Box::new(tree::Tree::new( - Uuid::new_v4(), - build_tree(h - 1), - build_tree(h - 1), - ))); - match &result { - Some(r) => (*r).run_simulation(), - _ => (), - } + let tree = tree::Tree::new(Uuid::new_v4(), build_tree(h - 1), build_tree(h - 1)); + tree.run_simulation(); + Some(Box::new(tree)) + } else { + None } - - result } /// Generates a bracket tree and runs simulation against each node. diff --git a/gemla/src/file_linked/mod.rs b/gemla/src/file_linked/mod.rs index 3de6e6f..552e28f 100644 --- a/gemla/src/file_linked/mod.rs +++ b/gemla/src/file_linked/mod.rs @@ -19,20 +19,17 @@ where match &meta { Ok(m) if m.is_file() => { - let mut file = fs::OpenOptions::new().read(true).open(path).or( - Err(format!( - "Unable to open file {}", - path - )), - )?; + let mut file = fs::OpenOptions::new().read(true).open(path).or_else(|_| { + Err(format!("Unable to open file {}", path)) + })?; let mut s = String::new(); - file.read_to_string(&mut s).or(Err(String::from( - "Unable to read from file.", - )))?; + file.read_to_string(&mut s).or_else(|_| { + Err(String::from("Unable to read from file.")) + })?; - let val = T::from_str(&s).or(Err(String::from( - "Unable to parse value from file.", - )))?; + let val = T::from_str(&s).or_else(|_| { + Err(String::from("Unable to parse value from file.")) + })?; Ok(FileLinked { val, @@ -70,11 +67,11 @@ where .create(true) .truncate(true) .open(&self.path) - .or(Err(format!("Unable to open path {}", self.path)))?; + .or_else(|_| Err(format!("Unable to open path {}", self.path)))?; - write!(file, "{}", self.val).or(Err(String::from( - "Unable to write to file.", - )))?; + write!(file, "{}", self.val).or_else(|_| { + Err(String::from("Unable to write to file.")) + })?; Ok(()) } diff --git a/gemla/src/main.rs b/gemla/src/main.rs index 75b8a00..5802220 100644 --- a/gemla/src/main.rs +++ b/gemla/src/main.rs @@ -28,7 +28,7 @@ fn main() { let directory = matches.value_of(constants::args::DIRECTORY).unwrap(); let metadata = metadata(directory); match &metadata { - Ok(m) if m.is_dir() == true => { + Ok(m) if m.is_dir() => { println!("{} is a valid directory!", directory); println!("Building tree for {}.", directory); bracket::run_bracket(); diff --git a/gemla/src/tree/mod.rs b/gemla/src/tree/mod.rs index 65a43ed..e65ae69 100644 --- a/gemla/src/tree/mod.rs +++ b/gemla/src/tree/mod.rs @@ -11,12 +11,15 @@ pub struct Tree { #[macro_export] macro_rules! btree { - ($val:expr, $l:expr, $r:expr) => { - $crate::tree::Tree::new($val, Some(Box::new($l)), Some(Box::new($r))) - }; - ($val:expr, , $r:expr) => { $crate::tree::Tree::new($val, None, Some(Box::new($r))) }; - ($val:expr, $l:expr,) => { $crate::tree::Tree::new($val, Some(Box::new($l)), None) }; - ($val:expr) => { Tree::new($val, None, None) }; + ($val:expr, $l:expr, $r:expr) => { + $crate::tree::Tree::new( + $val, + Some(Box::new($l)), + Some(Box::new($r)) + ) }; + ($val:expr, , $r:expr) => { $crate::tree::Tree::new($val, None, Some(Box::new($r))) }; + ($val:expr, $l:expr,) => { $crate::tree::Tree::new($val, Some(Box::new($l)), None) }; + ($val:expr) => { Tree::new($val, None, None) }; } impl Tree { @@ -90,16 +93,12 @@ fn from_str_helper(s: &str) -> Result>>, ParseTre let caps = re.captures(s); if let Some(c) = caps { - let val = T::from_str(c.get(1).unwrap().as_str()).or(Err( - ParseTreeError::new( - format!( - "Unable to parse node value: {}", - c.get(1) - .unwrap() - .as_str() - ), - ), - ))?; + let val = T::from_str(c.get(1).unwrap().as_str()).or_else(|_| { + Err(ParseTreeError::new(format!( + "Unable to parse node value: {}", + c.get(1).unwrap().as_str() + ))) + })?; let (left, right) = seperate_nodes(c.get(2).unwrap().as_str())?; let left = from_str_helper(left)?; let right = from_str_helper(right)?; @@ -122,7 +121,9 @@ where let result = from_str_helper(s)?; result - .ok_or(ParseTreeError::new(format!("Unable to parse string {}", s))) + .ok_or_else(|| { + ParseTreeError::new(format!("Unable to parse string {}", s)) + }) .and_then(|t| Ok(*t)) } }