From 42098a0a02e7e1770b0bf07f93aa37159945edb2 Mon Sep 17 00:00:00 2001 From: Melody Horn Date: Wed, 14 Apr 2021 17:59:46 -0600 Subject: move outer RefCell into DynamicTargetSet --- src/makefile/target.rs | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) (limited to 'src/makefile/target.rs') diff --git a/src/makefile/target.rs b/src/makefile/target.rs index 5de280d..8f56506 100644 --- a/src/makefile/target.rs +++ b/src/makefile/target.rs @@ -148,31 +148,32 @@ impl Into> for StaticTargetSet { // for targets that might become updated and so need refcelling #[derive(Clone, Default)] pub struct DynamicTargetSet { - data: HashMap>>, + data: RefCell>>>, } impl DynamicTargetSet { pub fn get(&self, name: &str) -> Option>> { - self.data.get(name).map(|x| Rc::clone(x)) + self.data.borrow().get(name).map(|x| Rc::clone(x)) } - pub fn put(&mut self, target: Target) { - if let Some(existing_target) = self.data.get_mut(&target.name) { + pub fn put(&self, target: Target) { + if let Some(existing_target) = self.data.borrow().get(&target.name) { existing_target.borrow_mut().extend(target); - } else { - self.data - .insert(target.name.clone(), Rc::new(RefCell::new(target))); + return; } + self.data + .borrow_mut() + .insert(target.name.clone(), Rc::new(RefCell::new(target))); } pub fn has(&self, name: &str) -> bool { - self.data.contains_key(name) + self.data.borrow().contains_key(name) } } impl fmt::Display for DynamicTargetSet { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - for target in self.data.values() { + for target in self.data.borrow().values() { writeln!(f, "{}", target.borrow())?; } Ok(()) -- cgit v1.2.3