В нестабильном Rust уже несколько лет есть функция `arbitrary_self_types`. Давайте стабилизируем это! Во-первых, что это за функция? В обычном Rust мы можем вызывать методы для типа, даже если у нас не совсем есть тип, но вместо этого (скажем) `Rc` тип Это также работает, если получатель метода (тип `self`) является интеллектуальным указателем, таким как `Rc` : (Обратите внимание, что мы добавляем методы в блок `impl` для `MyThingy`, а не для `Rc`, даже если тип принимающей стороны `Rc`). Это работает для различных видов “умных указателей”, включая: Но они жестко запрограммированы. Ты не можешь этого сделать: За исключением того, что вы можете скомпилировать, если используете `arbitrary_self_types` . Подобный этому: Так что, в общем-то, все. `arbitrary_self_types` - это способ расширить разрешение методов Rust, чтобы справиться с косвенностью с помощью пользовательских интеллектуальных указателей. Это работает для всего, что реализует признак `Deref`. (Были бы возможны и другие реализа