macro_rules! return_cfg {
($i:ident : $s:expr) => ( if cfg!($i = $s) { return $s; } );
($i:ident : $s:expr, $($t:expr),+) => ( return_cfg!($i: $s); return_cfg!($i: $($t),+) );
}
pub struct Target;
impl Target {
pub fn arch() -> &'static str {
return_cfg!(target_arch: "x86", "x86_64", "mips", "powerpc", "arm", "aarch64");
"unknown"
}
pub fn endian() -> &'static str {
return_cfg!(target_endian: "little", "big");
""
}
pub fn env() -> &'static str {
return_cfg!(target_env: "musl", "msvc", "gnu");
""
}
pub fn family() -> &'static str {
return_cfg!(target_family: "unix", "windows");
"unknown"
}
pub fn os() -> &'static str {
return_cfg!(target_os: "windows", "macos", "ios", "linux", "android", "freebsd", "dragonfly", "bitrig", "openbsd", "netbsd");
"unknown"
}
pub fn pointer_width() -> &'static str {
return_cfg!(target_pointer_width: "32", "64");
"unknown"
}
}