Когда речь идет о том чтоб везде был Rc по необходимости, то разница не в типах, а в синтаксисе. В Расте нужно везде писать явные Rc::clone(), Rc<T>, а в рубби - не нужно.
я говорю о том, что выразительные статические типы - это для себя, а не для контракта со всеми остальными. И чем сложнее либа и менее замороженный API, тем больше общение через эту либу будет в виде ООП и мессаджей и меньше через АДТ