提交 c03cab3f 编写于 作者: N Noah Lev

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.
上级 3f0f5101
......@@ -84,14 +84,12 @@ fn fold_mod(&mut self, m: Module) -> Module {
fn fold_crate(&mut self, mut c: Crate) -> Crate {
c.module = self.fold_item(c.module).unwrap();
{
let external_traits = { std::mem::take(&mut *c.external_traits.borrow_mut()) };
for (k, mut v) in external_traits {
v.trait_.items =
v.trait_.items.into_iter().filter_map(|i| self.fold_item(i)).collect();
c.external_traits.borrow_mut().insert(k, v);
}
let external_traits = { std::mem::take(&mut *c.external_traits.borrow_mut()) };
for (k, mut v) in external_traits {
v.trait_.items = v.trait_.items.into_iter().filter_map(|i| self.fold_item(i)).collect();
c.external_traits.borrow_mut().insert(k, v);
}
c
}
}
......@@ -43,9 +43,11 @@ fn visit_mod(&mut self, m: &Module) {
fn visit_crate(&mut self, c: &Crate) {
self.visit_item(&c.module);
let external_traits = c.external_traits.borrow();
for v in external_traits.values() {
v.trait_.items.iter().for_each(|i| self.visit_item(i))
// FIXME: make this a simple by-ref for loop once external_traits is cleaned up
let external_traits = { std::mem::take(&mut *c.external_traits.borrow_mut()) };
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);
}
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册