#![allow(unused_variables)] #![allow(dead_code)] fn main() { use std::sync::{Arc, Weak}; struct Gadget { me: Weak, } impl Gadget { /// Constructs a reference counted Gadget. fn new() -> Arc { Arc::new_cyclic(|me| { Gadget { me: me.clone() } }) } /// Returns a reference counted pointer to Self. fn me(&self) -> Arc { self.me.upgrade().unwrap() } } }