Is Rc a good way to work around partial borrow of self?

What about this?

pub fn outer_method(&mut self) {
    let vec = std::mem::take(&mut self.things);
    for thing in &vec {
        self.inner(thing);
    }
    self.things = vec;
}