os!() { /* proc-macro */ }Expand description
Includes modules based on the target_os cfg attribute.
Each module named $mod is conditionally compiled with the
#[cfg(target_os = $mod)] option, allowing OS-specific module
files/directories like windows.rs, unix.rs, etc.
Note that this macro does not check for nonexistent target_os
values, so incorrect usage will not lead to any warnings
(and likely never compile the incorrect modules).
See this page
for a list of possible values.
It is usually a good idea to provide the use keyword and expose
the same API methods in all specific operating systems, preventing
the need of target_os checking outside the crate.
§Parameters
os!($vis [use] [|| [$error]]);os! accepts a visibility and an optional use keyword, with the
same meaning as those in all!.
The optional || $error clause adds the code to check if at least
one of the modules is compiled; otherwise,
compile_error!
would be triggered. $error should be a string literal. If $error
is omitted, it is replaced by the default message
"target_os must be one of \"xxx\", \"yyy\", ...",
where xxx and yyy are the available modules.
os! does not provide any filtering, and is intended for parent
modules with only platform-specific submodules. If non-OS-specific
modules are desired, consider moving the OS-specific modules to the
same directory.
§Examples
os!(priv ||);os!(pub use || "Unsupported operating system");If none of the modules in the directory get compiled, compilation would abort with the message “Unsupported operating system”.