Продвинутые возможности
К этому моменту вы изучили самые используемые части языка Rust. Прежде чем взяться за ещё один проект в главе 21, рассмотрим несколько сторон языка, которые могут иногда встречаться, но которыми вы, возможно, не пользуетесь каждый день. Эту главу можно использовать как справочник, когда встретите что-то незнакомое. Описанные здесь возможности полезны в очень конкретных ситуациях. И хотя вы вряд ли будете часто к ним обращаться, мы хотим, чтобы вы представляли себе все возможности, которые даёт Rust.
В этой главе мы разберём:
- небезопасный Rust: как отказаться от части гарантий Rust и взять на себя ответственность за их соблюдение;
- продвинутые трейты: ассоциированные типы, параметры типа по умолчанию, полностью квалифицированный синтаксис, супертрейты и паттерн newtype применительно к трейтам;
- продвинутые типы: ещё о паттерне newtype, псевдонимы типов, тип never и типы с динамическим размером;
- продвинутые функции и замыкания: указатели на функции и возврат замыканий;
- макросы: способы определять код, который при компиляции порождает другой код.
Это целая палитра возможностей Rust — каждый найдёт что-то для себя! Начнём!