которая была имплементирована типажом?
dyn? dyn стер ваш тип, ему неизвестен чта эта за Test. ему известен трейт Component, в котором вы можете добавить функции as_x и прокинуть поле x
То самое чего я больше всего боялся.. Спасибо!
dyn + box хранит в себе только уеазатель на данные (неизвестный тип) + указатель на vtable из vtable можно дергать функции, он у вас Component. можете попробовать downcast и вернуть себе Test, можете скомпоновать с трейтом AsRef , или как я вам сказал взять и сделать as функции
зачем as_x() если можно просто x()?
Красивее и понятнее
может быть и дело вкусовщины, но as намекает на то что не будет дополнительных затрат на преобразование
если я вижу as_* я думаю, что функция выполняет ещё и преобразование типа (по аналогии String -> &str например). Но это всё imho
вообще, да, логичнее будет добавить get либо просто оставить, так как as зачастую означает преобразование
https://doc.rust-lang.org/1.0.0/style/style/naming/conversions.html не благодарите ☺️
Обсуждают сегодня