I created a crate called borrow_trait, which provides 2 traits for immutably and mutably borrowing from different kinds of RefCells and wrappers like Arc<RefCell>.
I am not sure if there is anything I can improve or add
Arc<RefCell<T>> is not Send as RefCell<T> is not Send, so it's not more useful than Rc<RefCell<T>>. But it still increment/decrement its counter with atomic operation which comes with its cost, while guaranteed to be single thread access.