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;
    }
}