Rc

コレクション(Vec, HashMap)、または Option の中に入れて、 中身を clone して返すことで、入れ物への borrow を早期に終了させる。

中身


#![allow(unused)]
fn main() {
let src: Rc<Option<i32>> = Rc::new(Some(1));

// * deref(Option<i32>) して、
// & 参照する(&Option<i32>)
if let Some(i) = &*src
{
}
}

#![allow(unused)]
fn main() {
let src: Rc<Option<i32>> = Rc::new(Some(1));
let src2: &Rc<Option<i32>> = &src;

// * deref して(Rc<Option<i32>>)、
// * deref して(Option<i32>)、
// & 参照する(&Option<i32>)
if let Some(i) = &**src2
{
}
}