cfg
Có thể kiểm tra điều kiện cấu hình thông qua 2 toán tử khác nhau:
- thuộc tính
cfg
:#[cfg(...)]
ở vị trí thuộc tính - macro
cfg!
:cfg!(...)
trong biểu thức boolean
Trong khi cái đầu tiên sử dụng kiểm tra điều kiện khi biên dịch, điều kiện sau
đánh giá là true
hay false
trong thời gian chạy. Cả 2 đều dùng những tham số giống nhau.
cfg!
, không giống #[cfg]
, không xóa bất kỳ mã nào và chỉ đánh giá true
hoặc false
. Ví dụ, tất cả các block trong một câu điều kiện if/else cần phải hợp lệ khi sử dụng marco cfg!
, bất kể cái gì cfg!
đang đánh giá.
// Hàm này chỉ được biên dịch nếu OS là Linux #[cfg(target_os = "linux")] fn are_you_on_linux() { println!("You are running linux!"); } // Và hàm này chỉ được biên dịch nếu OS *không* là linux #[cfg(not(target_os = "linux"))] fn are_you_on_linux() { println!("You are *not* running linux!"); } fn main() { are_you_on_linux(); println!("Are you sure?"); if cfg!(target_os = "linux") { println!("Yes. It's definitely linux!"); } else { println!("Yes. It's definitely *not* linux!"); } }
See also:
the reference, cfg!
, and macros.