1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
//! 平台相关的平台抽象。
//!
//! `std::sys` 模块是抽象接口,`std` 通过该接口与底层操作系统进行对话。
//! 对于不同的操作系统系列,它具有不同的实现方式,今天只有 Unix 和 Windows,并且最初支持 Redox。
//!
//! 该模块中特定于平台的代码的集中由 `tools/tidy/src/pal.rs` 中的 "platform abstraction layer" 整洁脚本强制执行。
//!
//! 该模块与 `std::sys_common` 中与平台无关的系统集成代码紧密相关。有关详细信息,请参见该模块的文档。
//!
//! 在 future 中,希望将此模块的独立实现提取到 `std` 可以链接到其自己的 crates,从而通过 crate 替换使其实现树外。
//!
//! 尽管由于 `std` 中复杂的相互依赖关系,这将是一个具有挑战性的目标。
//!
//!
//!
//!
//!
//!
//!
//!
//!
#![allow(missing_debug_implementations)]
pub mod common;
cfg_if::cfg_if! {
if #[cfg(unix)] {
mod unix;
pub use self::unix::*;
} else if #[cfg(windows)] {
mod windows;
pub use self::windows::*;
} else if #[cfg(target_os = "solid_asp3")] {
mod solid;
pub use self::solid::*;
} else if #[cfg(target_os = "hermit")] {
mod hermit;
pub use self::hermit::*;
} else if #[cfg(target_os = "wasi")] {
mod wasi;
pub use self::wasi::*;
} else if #[cfg(target_family = "wasm")] {
mod wasm;
pub use self::wasm::*;
} else if #[cfg(all(target_vendor = "fortanix", target_env = "sgx"))] {
mod sgx;
pub use self::sgx::*;
} else {
mod unsupported;
pub use self::unsupported::*;
}
}
cfg_if::cfg_if! {
// Fuchsia 组件默认为完全回溯。
if #[cfg(target_os = "fuchsia")] {
pub const FULL_BACKTRACE_DEFAULT: bool = true;
} else {
pub const FULL_BACKTRACE_DEFAULT: bool = false;
}
}