未能提早释放的RefCell
2021-11-06

未能提早释放的 RefCell


code


在写代码时发现有些情况通过 RefCell::borrow 方法所产生的不可变引用会比想象中的存活更长时间.

{{#include ../../codes/rust/src/bin/2021-11-06.rs}}

Some(idx) 中 idx 为 usize, 因此我以为右边的不可变引用在 x.borrow().iter().position(|&i| i == 3) 结束后会提前释放, 实际上这个不可变引用会一直存活, 导致 borrow_mut panic.