OsStr, Path - как реализовано?

По сути, все создание OsStr живет в этих реализациях AsRef:

image

что поле inner в Path не инициализируется, а всё конструирование выполняется приведениями типов

Поскольку структура из одного поля, то адрес этого поля такой же, как у самой структуры. Так что в Path::new сначала через AsRef получается ссылка на OsStr, а потом она просто unsafe’ом приводится к ссылке на Path.

1 лайк