Как стать автором
Обновить

Комментарии 2

описывающий сборку 1+ крейтов

странный способ сказать "из нескольких". Если вы пытались сократить размер статьи. то вышло так себе.

это дерево модулей, где бинарный крейт является исполняемым файлом, а библиотечный крейт компилируется в библиотеку

крейты - это юниты трансляции кода, которые в зависимости от его типа могут быть статтической/динамической библиотекой, так и частью исполняемого бинарника.

модули определяют организацию и область видимости кода

за область видимости кода отвечают модификаторы доступа, а не модули. модули отвечают только за организацию API.

"внутренних комментариев документа".

что простите? это вы так docstring перевели?

родители и сиблинги

почему не паренты, тогда?

продвинутые спецификаторы pub

а самый сок в статью не добавили.

Интеграционные тесты

По-умолчанию есть только юнит тесты, то бишь когда пишутся тесты на какие-то отдельные функции. Их можно использовать для написания интеграционных тестов, но это явно не их дефолтное назначение.

Блоки кода в комментариях /// считаются валидным кодом Rust

Они не считаются валидным кодом, если их нельзя скомпилировать.

понадобится std::mem::transmute

стоит сделать ремарку, что по-умолчанию порядок полей в структурах не гарантируется, поэтому если хочется нормально кастить память из байтов в сложные типы, то не забывать указывать #[repr(C)] у таких структур, чтобы не получать внезапную кашу.

по-умолчанию порядок полей в структурах не гарантируется

Более того: используется активно в оптимизациях (да хотя бы для минимизации паддингов).

Буквально на днях вышел Rust 1.77, где синтаксис для сишных строк упростили:

const HELLO: &core::ffi::CStr = c"Hello, world!";
Зарегистрируйтесь на Хабре, чтобы оставить комментарий