c.module = c.module.take().and_then(|module| self.fold_item(module));
{
- let guard = c.external_traits.lock();
- let traits = guard.replace(Default::default());
- guard.borrow_mut().extend(traits.into_iter().map(|(k, mut v)| {
+ let mut guard = c.external_traits.borrow_mut();
+ let external_traits = std::mem::replace(&mut *guard, Default::default());
+ *guard = external_traits.into_iter().map(|(k, mut v)| {
v.items = v.items.into_iter().filter_map(|i| self.fold_item(i)).collect();
(k, v)
- }));
+ }).collect();
}
c
}