Почему size_of :: <& T> () == size_of :: <usize>() зависит от размера T? - PullRequest
0 голосов
/ 11 января 2019

Документы для size_of говорят следующее:

Если T имеет размер, все эти типы [типы указателей, такие как &T] имеют тот же размер, что и usize.

Почему этот классификатор? Разве указатель не имеет определенного размера независимо от какого-либо свойства типа, на который указывает указатель?

1 Ответ

0 голосов
/ 11 января 2019

Негабаритные ссылки на объекты имеют дополнительные данные в дополнение к указателю на объект. В случае ссылок на срезы (&[T]) они содержат размер для указания длины этого среза. А в случае ссылок на признаки (объекты признаков) они содержат указатель на виртуальную таблицу, чтобы включить динамическую диспетчеризацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...