Возможности и профили
Условная компиляция
«Возможности и профили» — бесплатный урок Learn Rust Coding на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Learn Rust Coding, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Learn Rust Coding содержит 4 уроков всего.
Что такое возможности?
Возможности позволяют во время компиляции включать или отключать необязательные части пакета. Они делают пакеты гибкими: вызывающий код платит только за используемые возможности.
Объявление возможностей
Определяйте возможности в таблице [features]. Каждая возможность может включать другие возможности или необязательные зависимости.
[features]
default = ["json"]
json = []
fast_math = []Условная компиляция
Ограничивайте код атрибутом cfg, чтобы он компилировался только при включённой возможности.
#[cfg(feature = "json")]
fn export() {
println!("Exporting as JSON");
}
fn main() {
#[cfg(feature = "json")]
export();
}Включение возможностей
Вызывающий код включает возможности в объявлении зависимости или в командной строке.
[dependencies]
my_lib = { version = "1.0", features = ["fast_math"] }Возможности по умолчанию
Возможность default включается автоматически. Отключите её с помощью default-features = false, чтобы выбрать минимальную сборку.
[dependencies]
my_lib = { version = "1.0", default-features = false }Возможности в CLI
Можно также переключать возможности для каждой команды, не редактируя манифест.
cargo build --features fast_math
cargo run --no-default-features
cargo test --all-featuresЧто такое профили?
Профили управляют настройками компилятора, такими как уровень оптимизации и отладочная информация. Два встроенных профиля — dev (отладочный) и release.
Профиль dev
Профиль dev используется командой cargo build. Он отдаёт приоритет быстрой компиляции и удобству отладки, а не скорости выполнения.
[profile.dev]
opt-level = 0
debug = trueПрофиль release
Профиль release (используемый с --release) включает оптимизацию для получения быстрых двоичных файлов.
[profile.release]
opt-level = 3
lto = true
strip = trueНастройка профиля
Любой профиль можно тонко настроить. Например, включить небольшую оптимизацию в отладочных сборках, чтобы ускорить выполнение, сохранив быструю компиляцию зависимостей.
[profile.dev]
opt-level = 1
[profile.dev.package."*"]
opt-level = 3Необязательные зависимости как возможности
Необязательная зависимость неявно создаёт возможность с таким же именем. Включение возможности подключает зависимость, поэтому пользователи выбирают более тяжёлые пакеты только при необходимости.
[dependencies]
serde = { version = "1.0", optional = true }
[features]
serialize = ["dep:serde"]Быстрая проверка
Какой атрибут компилирует блок кода только при включённой возможности?
Итоги
Вы изучили средства условной компиляции:
[features]объявляет необязательную функциональность#[cfg(feature = ...)]ограничивает код возможностьюdefault-features = falseвыбирает минимальные сборки- Профили, такие как
devиrelease, управляют оптимизацией и настройками отладки
Часто задаваемые вопросы
Урок «Возможности и профили» бесплатный?
Да — полный текст урока «Возможности и профили» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Learn Rust Coding, подпишись на CoddyKit PRO. Курс Learn Rust Coding содержит 4 уроков всего.
Чему я научусь в уроке «Возможности и профили»?
Условная компиляция Ты практикуешь Learn Rust Coding с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Learn Rust Coding?
Предыдущий опыт не требуется. Learn Rust Coding на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Возможности и профили»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Learn Rust Coding?
Да. Каждый урок Learn Rust Coding включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Основы Cargo
- Cargo.toml
- Рабочие пространства
- Возможности и профили