#[cfg(target_os = "linux")]
fn read_file() -> std::io::Result<String> {
std::fs::read_to_string("/etc/passwd")
}
#[cfg(target_os = "windows")]
fn read_file() -> std::io::Result<String> {
std::fs::read_to_string("C:\\Windows\\system.ini")
}
fn main() {
match read_file() {
Ok(content) => println!("File content:\n{}", content),
Err(e) => eprintln!("Error reading file: {}", e),
}
}
条件编译在该场景中的作用
- 跨平台兼容性:通过条件编译,Rust 代码可以针对不同的操作系统平台,选择编译不同的代码片段。这样同一个项目可以在 Linux 和 Windows 等不同操作系统上编译并运行,而无需为每个平台创建独立的代码库。
- 代码复用与简洁性:大部分代码逻辑(如文件读取后的处理)可以复用,只有与平台相关的文件路径部分通过条件编译进行区分。避免了在代码中使用大量的运行时条件判断,使代码结构更加清晰简洁。
- 提高编译效率:编译器只会编译目标平台对应的代码,减少了不必要的编译工作,提高了编译效率。