Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Профили сборки

В Rust профили сборки (release profiles) — это заранее определённые настраиваемые профили с разными конфигурациями, которые дают программисту больше контроля над параметрами компиляции кода. Каждый профиль настраивается независимо от остальных.

У Cargo два основных профиля: dev, который используется при cargo build, и release, который используется при cargo build --release. У профиля dev настройки по умолчанию хорошо подходят для разработки, а у release — для сборки релизов.

Эти имена профилей могут быть вам знакомы по выводу сборки:

$ cargo build
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.00s
$ cargo build --release
    Finished `release` profile [optimized] target(s) in 0.32s

dev и release — это и есть разные профили, которые использует компилятор.

Для каждого профиля у Cargo есть настройки по умолчанию, которые действуют, пока вы явно не добавили в Cargo.toml проекта секции [profile.*]. Добавив секцию [profile.*] для профиля, который хотите настроить, можно переопределить любую часть настроек по умолчанию. Например, вот значения настройки opt-level по умолчанию для профилей dev и release:

Файл: Cargo.toml

[profile.dev]
opt-level = 0

[profile.release]
opt-level = 3

Настройка opt-level управляет тем, сколько оптимизаций Rust применит к коду, — от 0 до 3. Чем больше оптимизаций, тем дольше компиляция. Поэтому во время разработки, когда код компилируется часто, лучше меньше оптимизаций — пусть компиляция будет быстрее, даже если итоговый код работает медленнее. Поэтому opt-level по умолчанию для dev равен 0. А когда код готов к выпуску, на компиляцию лучше потратить больше времени: в режиме релиза вы скомпилируете программу один раз, а запускать будете много раз. Режим релиза жертвует временем компиляции ради более быстрого кода. Поэтому opt-level по умолчанию для профиля release равен 3.

Настройку по умолчанию можно переопределить, указав другое значение в Cargo.toml. Например, если в профиле разработки мы хотим использовать уровень оптимизации 1, добавим в Cargo.toml проекта две строки:

Файл: Cargo.toml

[profile.dev]
opt-level = 1

Этот код переопределяет значение по умолчанию 0. Теперь cargo build будет использовать настройки профиля dev по умолчанию плюс нашу настройку opt-level. Раз мы задали opt-level равным 1, Cargo применит больше оптимизаций, чем по умолчанию, но не столько, сколько при сборке релиза.

Полный список параметров и их значения по умолчанию для каждого профиля — в документации Cargo.