> Те, кто 10-15 лет на С++ писал, осваивают ржавчину вообще чтением учебника в духе "Rust In Action" по диагоналиЭто им кажется, что они осваивают ржавчину таким образом. Я присматривался к slint пару месяцев назад, и решил что я уж лучше погрызу кактус недокументированного iced, потому что slint в некоторых местах вызывал у меня сомнений вида "аргумент идёт по &-ссылке, но по-логике он должен идти через &mut-ссылку". Не стал ковырять глубже, чтобы понять не кажется ли мне, на это надо очень много свободного времени, но осадочек остался. Может они там рантайм боровчекер использовали? Что-нибудь типа interior mutability как у RefCell? Хз.
Rust -- это другая парадигма, ортогональная тому, что есть в C++. C++ о повторном использовании кода и о том, чтобы замести сложность под ковёр инкапсуляцией. Rust о том, чтобы о корректности кода можно было бы рассуждать логически, рассматривая одну функцию за раз. Желательно чтобы эти рассуждения компилятор проводил бы автоматом при каждой компиляции. Но это же всё достигается посредством кодирования в API того, как низлежащий код обходится с аргументами, и если ради снижения проблем с боровчекером API меняется, то это значит что проблемы полезут в рантайме, и вот о них уже рассуждать логически будет невозможно без использования дебуггера, потому что рассуждения потребуют отвечать на вопросы, которые требуют просмотра всего кода для ответа. И RefCell в этом смысле не сильно лучше, потому что хоть он и позволяет обойтись без дебуггера, разбираясь в причинах паники, но это всё равно рантайм проблемы. Такие рантайм проблемы, которых невозможно избежать рассуждая логически об одной функции за раз.