Fix RefCell
BorrowMut
error in DocVisitor
Until `external_traits` is cleaned up (i.e., no longer behind a `RefCell`), `DocVisitor` will have to `take` `external_traits` -- just like `DocFolder` -- to prevent `RefCell` runtime errors.
This commit is contained in:
parent
3f0f51017c
commit
c03cab3fd0
2 changed files with 10 additions and 10 deletions
|
@ -84,14 +84,12 @@ crate trait DocFolder: Sized {
|
||||||
fn fold_crate(&mut self, mut c: Crate) -> Crate {
|
fn fold_crate(&mut self, mut c: Crate) -> Crate {
|
||||||
c.module = self.fold_item(c.module).unwrap();
|
c.module = self.fold_item(c.module).unwrap();
|
||||||
|
|
||||||
{
|
let external_traits = { std::mem::take(&mut *c.external_traits.borrow_mut()) };
|
||||||
let external_traits = { std::mem::take(&mut *c.external_traits.borrow_mut()) };
|
for (k, mut v) in external_traits {
|
||||||
for (k, mut v) in external_traits {
|
v.trait_.items = v.trait_.items.into_iter().filter_map(|i| self.fold_item(i)).collect();
|
||||||
v.trait_.items =
|
c.external_traits.borrow_mut().insert(k, v);
|
||||||
v.trait_.items.into_iter().filter_map(|i| self.fold_item(i)).collect();
|
|
||||||
c.external_traits.borrow_mut().insert(k, v);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
c
|
c
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,9 +43,11 @@ crate trait DocVisitor: Sized {
|
||||||
fn visit_crate(&mut self, c: &Crate) {
|
fn visit_crate(&mut self, c: &Crate) {
|
||||||
self.visit_item(&c.module);
|
self.visit_item(&c.module);
|
||||||
|
|
||||||
let external_traits = c.external_traits.borrow();
|
// FIXME: make this a simple by-ref for loop once external_traits is cleaned up
|
||||||
for v in external_traits.values() {
|
let external_traits = { std::mem::take(&mut *c.external_traits.borrow_mut()) };
|
||||||
v.trait_.items.iter().for_each(|i| self.visit_item(i))
|
for (k, v) in external_traits {
|
||||||
|
v.trait_.items.iter().for_each(|i| self.visit_item(i));
|
||||||
|
c.external_traits.borrow_mut().insert(k, v);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue