Условная компиляция функций в Rust

RustRustBeginner
Практиковаться сейчас

This tutorial is from open-source community. Access the source code

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом лабораторном задании есть фрагмент кода, в котором есть функция с именем conditional_function(), но она будет скомпилирована и выполнена только в том случае, если в rustc будет передано пользовательское условие под названием some_condition с использованием флага --cfg.

Примечание: Если в лабораторном задании не указано имя файла, вы можете использовать любое имя файла, которое хотите. Например, вы можете использовать main.rs, скомпилировать и запустить его с помощью rustc main.rs &&./main.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL rust(("Rust")) -.-> rust/FunctionsandClosuresGroup(["Functions and Closures"]) rust/FunctionsandClosuresGroup -.-> rust/function_syntax("Function Syntax") rust/FunctionsandClosuresGroup -.-> rust/expressions_statements("Expressions and Statements") subgraph Lab Skills rust/function_syntax -.-> lab-99343{{"Условная компиляция функций в Rust"}} rust/expressions_statements -.-> lab-99343{{"Условная компиляция функций в Rust"}} end

Пользовательское

Некоторые условия, такие как target_os, неявно предоставляются rustc, но пользовательские условия должны быть переданы rustc с использованием флага --cfg.

#[cfg(some_condition)]
fn conditional_function() {
    println!("условие выполнено!");
}

fn main() {
    conditional_function();
}

Попробуйте запустить это, чтобы увидеть, что произойдет без пользовательского флага cfg.

С пользовательским флагом cfg:

$ rustc --cfg some_condition custom.rs && ./custom
условие выполнено!

Резюме

Поздравляем! Вы завершили лабораторную работу "Пользовательское". Вы можете практиковаться в других лабораторных работах в LabEx, чтобы улучшить свои навыки.