Нeдавно использовал Cell<T>. Хотел внедрить счётчик в две фабрики, чтобы ограничить общее количество создаваемых ими экземпляров. Сначала пошёл на поводу у компилятора, который ругался, что счётчик неизменяемый. А сделаешь его изменяемым натыкаешься на ограничение но количеству изменяемых ссылок (допускается только одна). Получается, одна фабрика работает, а добавишь вторую - ошибка. Пытался обернуть структуру счётчика и в RefCell и в Cell. Не вышло по причине, что синтаксис становился каким-то сложным и нерабочим. Выход - применить Cell не ко всему счётчику, а только к одному меняющемуся полю. Появилось понятие "внутренняя изменяемость". Код
демо-проекта есть на GitHub. Рекомендуют предпочесть Cell в противовес RefCell, так как RefCell приводит к выполнению дополнительных действий при исполнении программы и может вызвать панику.
https://doc.rust-lang.org/std/cell/