BONEFLUTE: Cilem hry je ziskat:
(1) Uvoleneni zdroju kdyz uz je nikdo nevyuziva
(2) Zabranit tomu aby nekdo ziskal zaroven read and write referenci nebo dve write.
Rc resi (1) tim ze ma counter ktery pocita kolik je uzivatelu te reference, kdyz spadne na 0 tak uvolnuje. "get_mut" na Rc pak ve specialnim pripade kdy counter ma hodnotu prave 1 umoznuje vratit &mut referenci, protoze tim ze vime ze jsme jedini kdo ma tuto referenci, tak je to bezpecne i vzhledem k (2). Pokud uz ale Root ma alespon dva Itemy tak Rc counter bude alespon na 2 a tedy get_mut selze (i kdyz nikdo zrovna nema read/write pristup). Proto je tam nutne dat RefCell, ktery slouzi k reseni (2) a zavede dalsi counter, ktery pocita rozpujcovane reference.
Zkracene: Rc pocita kolik existuje mist na kterych o nas vedi, RefCell pocita kolik mist cte, pripadne jestli do nas nekdo zrovna nezapisuje.
Oboji idealne hlida prekladac v dobe prekladu, ale nekdy to nejde vyjadrit a je treba tyto kontrolu shodit pomoci Rc/RefCellu do runtimu.