1 //! OS-specific functionality. 2 3 #![stable(feature = "os", since = "1.0.0")] 4 #![allow(missing_docs, nonstandard_style, missing_debug_implementations)] 5 6 pub mod raw; 7 8 // The code below could be written clearer using `cfg_if!`. However, the items below are 9 // publicly exported by `std` and external tools can have trouble analysing them because of the use 10 // of a macro that is not vendored by Rust and included in the toolchain. 11 // See https://github.com/rust-analyzer/rust-analyzer/issues/6038. 12 13 // On certain platforms right now the "main modules" modules that are 14 // documented don't compile (missing things in `libc` which is empty), 15 // so just omit them with an empty module and add the "unstable" attribute. 16 17 // Unix, linux, wasi and windows are handled a bit differently. 18 #[cfg(all( 19 doc, 20 any( 21 all(target_arch = "wasm32", not(target_os = "wasi")), 22 all(target_vendor = "fortanix", target_env = "sgx") 23 ) 24 ))] 25 #[unstable(issue = "none", feature = "std_internals")] 26 pub mod unix {} 27 #[cfg(all( 28 doc, 29 any( 30 all(target_arch = "wasm32", not(target_os = "wasi")), 31 all(target_vendor = "fortanix", target_env = "sgx") 32 ) 33 ))] 34 #[unstable(issue = "none", feature = "std_internals")] 35 pub mod linux {} 36 #[cfg(all( 37 doc, 38 any( 39 all(target_arch = "wasm32", not(target_os = "wasi")), 40 all(target_vendor = "fortanix", target_env = "sgx") 41 ) 42 ))] 43 #[unstable(issue = "none", feature = "std_internals")] 44 pub mod wasi {} 45 #[cfg(all( 46 doc, 47 any( 48 all(target_arch = "wasm32", not(target_os = "wasi")), 49 all(target_vendor = "fortanix", target_env = "sgx") 50 ) 51 ))] 52 #[unstable(issue = "none", feature = "std_internals")] 53 pub mod windows {} 54 55 // unix 56 #[cfg(not(all( 57 doc, 58 any( 59 all(target_arch = "wasm32", not(target_os = "wasi")), 60 all(target_vendor = "fortanix", target_env = "sgx") 61 ) 62 )))] 63 #[cfg(target_os = "hermit")] 64 #[path = "hermit/mod.rs"] 65 pub mod unix; 66 #[cfg(not(all( 67 doc, 68 any( 69 all(target_arch = "wasm32", not(target_os = "wasi")), 70 all(target_vendor = "fortanix", target_env = "sgx") 71 ) 72 )))] 73 #[cfg(all(not(target_os = "hermit"), any(unix, doc)))] 74 pub mod unix; 75 76 // linux 77 #[cfg(not(all( 78 doc, 79 any( 80 all(target_arch = "wasm32", not(target_os = "wasi")), 81 all(target_vendor = "fortanix", target_env = "sgx") 82 ) 83 )))] 84 #[cfg(any(target_os = "linux", target_os = "l4re", doc))] 85 pub mod linux; 86 87 // wasi 88 #[cfg(not(all( 89 doc, 90 any( 91 all(target_arch = "wasm32", not(target_os = "wasi")), 92 all(target_vendor = "fortanix", target_env = "sgx") 93 ) 94 )))] 95 #[cfg(any(target_os = "wasi", doc))] 96 pub mod wasi; 97 98 // windows 99 #[cfg(not(all( 100 doc, 101 any( 102 all(target_arch = "wasm32", not(target_os = "wasi")), 103 all(target_vendor = "fortanix", target_env = "sgx") 104 ) 105 )))] 106 #[cfg(any(windows, doc))] 107 pub mod windows; 108 109 // Others. 110 #[cfg(target_os = "android")] 111 pub mod android; 112 #[cfg(target_os = "dragonfly")] 113 pub mod dragonfly; 114 #[cfg(target_os = "emscripten")] 115 pub mod emscripten; 116 #[cfg(target_os = "espidf")] 117 pub mod espidf; 118 #[cfg(all(target_vendor = "fortanix", target_env = "sgx"))] 119 pub mod fortanix_sgx; 120 #[cfg(target_os = "freebsd")] 121 pub mod freebsd; 122 #[cfg(target_os = "fuchsia")] 123 pub mod fuchsia; 124 #[cfg(target_os = "haiku")] 125 pub mod haiku; 126 #[cfg(target_os = "illumos")] 127 pub mod illumos; 128 #[cfg(target_os = "ios")] 129 pub mod ios; 130 #[cfg(target_os = "macos")] 131 pub mod macos; 132 #[cfg(target_os = "netbsd")] 133 pub mod netbsd; 134 #[cfg(target_os = "openbsd")] 135 pub mod openbsd; 136 #[cfg(target_os = "redox")] 137 pub mod redox; 138 #[cfg(target_os = "solaris")] 139 pub mod solaris; 140 141 #[cfg(target_os = "solid_asp3")] 142 pub mod solid; 143 #[cfg(target_os = "vxworks")] 144 pub mod vxworks; 145 146 #[cfg(any(unix, target_os = "wasi", doc))] 147 mod fd; 148