Initial STD support for Cygwin
Signed-off-by: Ookiineko <chiisaineko@protonmail.com>
This commit is contained in:
122
library/std/src/os/cygwin/fs.rs
Normal file
122
library/std/src/os/cygwin/fs.rs
Normal file
@@ -0,0 +1,122 @@
|
||||
#![stable(feature = "metadata_ext", since = "1.1.0")]
|
||||
use crate::fs::Metadata;
|
||||
#[allow(deprecated)]
|
||||
use crate::os::cygwin::raw;
|
||||
use crate::sys_common::AsInner;
|
||||
/// OS-specific extensions to [`fs::Metadata`].
|
||||
///
|
||||
/// [`fs::Metadata`]: crate::fs::Metadata
|
||||
#[stable(feature = "metadata_ext", since = "1.1.0")]
|
||||
pub trait MetadataExt {
|
||||
/// Gain a reference to the underlying `stat` structure which contains
|
||||
/// the raw information returned by the OS.
|
||||
///
|
||||
/// The contents of the returned `stat` are **not** consistent across
|
||||
/// Unix platforms. The `os::unix::fs::MetadataExt` trait contains the
|
||||
/// cross-Unix abstractions contained within the raw stat.
|
||||
#[stable(feature = "metadata_ext", since = "1.1.0")]
|
||||
#[deprecated(
|
||||
since = "1.8.0",
|
||||
note = "deprecated in favor of the accessor \
|
||||
methods of this trait"
|
||||
)]
|
||||
#[allow(deprecated)]
|
||||
fn as_raw_stat(&self) -> &raw::stat;
|
||||
#[stable(feature = "metadata_ext2", since = "1.8.0")]
|
||||
fn st_dev(&self) -> u64;
|
||||
#[stable(feature = "metadata_ext2", since = "1.8.0")]
|
||||
fn st_ino(&self) -> u64;
|
||||
#[stable(feature = "metadata_ext2", since = "1.8.0")]
|
||||
fn st_mode(&self) -> u32;
|
||||
#[stable(feature = "metadata_ext2", since = "1.8.0")]
|
||||
fn st_nlink(&self) -> u64;
|
||||
#[stable(feature = "metadata_ext2", since = "1.8.0")]
|
||||
fn st_uid(&self) -> u32;
|
||||
#[stable(feature = "metadata_ext2", since = "1.8.0")]
|
||||
fn st_gid(&self) -> u32;
|
||||
#[stable(feature = "metadata_ext2", since = "1.8.0")]
|
||||
fn st_rdev(&self) -> u64;
|
||||
#[stable(feature = "metadata_ext2", since = "1.8.0")]
|
||||
fn st_size(&self) -> u64;
|
||||
#[stable(feature = "metadata_ext2", since = "1.8.0")]
|
||||
fn st_atime(&self) -> i64;
|
||||
#[stable(feature = "metadata_ext2", since = "1.8.0")]
|
||||
fn st_atime_nsec(&self) -> i64;
|
||||
#[stable(feature = "metadata_ext2", since = "1.8.0")]
|
||||
fn st_mtime(&self) -> i64;
|
||||
#[stable(feature = "metadata_ext2", since = "1.8.0")]
|
||||
fn st_mtime_nsec(&self) -> i64;
|
||||
#[stable(feature = "metadata_ext2", since = "1.8.0")]
|
||||
fn st_ctime(&self) -> i64;
|
||||
#[stable(feature = "metadata_ext2", since = "1.8.0")]
|
||||
fn st_ctime_nsec(&self) -> i64;
|
||||
#[stable(feature = "metadata_ext2", since = "1.8.0")]
|
||||
fn st_blksize(&self) -> u64;
|
||||
#[stable(feature = "metadata_ext2", since = "1.8.0")]
|
||||
fn st_blocks(&self) -> u64;
|
||||
#[stable(feature = "metadata_ext2", since = "1.8.0")]
|
||||
fn st_birthtime(&self) -> i64;
|
||||
#[stable(feature = "metadata_ext2", since = "1.8.0")]
|
||||
fn st_birthtime_nsec(&self) -> i64;
|
||||
}
|
||||
#[stable(feature = "metadata_ext", since = "1.1.0")]
|
||||
impl MetadataExt for Metadata {
|
||||
#[allow(deprecated)]
|
||||
fn as_raw_stat(&self) -> &raw::stat {
|
||||
unsafe { &*(self.as_inner().as_inner() as *const libc::stat as *const raw::stat) }
|
||||
}
|
||||
fn st_dev(&self) -> u64 {
|
||||
self.as_inner().as_inner().st_dev as u64
|
||||
}
|
||||
fn st_ino(&self) -> u64 {
|
||||
self.as_inner().as_inner().st_ino as u64
|
||||
}
|
||||
fn st_mode(&self) -> u32 {
|
||||
self.as_inner().as_inner().st_mode as u32
|
||||
}
|
||||
fn st_nlink(&self) -> u64 {
|
||||
self.as_inner().as_inner().st_nlink as u64
|
||||
}
|
||||
fn st_uid(&self) -> u32 {
|
||||
self.as_inner().as_inner().st_uid as u32
|
||||
}
|
||||
fn st_gid(&self) -> u32 {
|
||||
self.as_inner().as_inner().st_gid as u32
|
||||
}
|
||||
fn st_rdev(&self) -> u64 {
|
||||
self.as_inner().as_inner().st_rdev as u64
|
||||
}
|
||||
fn st_size(&self) -> u64 {
|
||||
self.as_inner().as_inner().st_size as u64
|
||||
}
|
||||
fn st_atime(&self) -> i64 {
|
||||
self.as_inner().as_inner().st_atime as i64
|
||||
}
|
||||
fn st_atime_nsec(&self) -> i64 {
|
||||
self.as_inner().as_inner().st_atime_nsec as i64
|
||||
}
|
||||
fn st_mtime(&self) -> i64 {
|
||||
self.as_inner().as_inner().st_mtime as i64
|
||||
}
|
||||
fn st_mtime_nsec(&self) -> i64 {
|
||||
self.as_inner().as_inner().st_mtime_nsec as i64
|
||||
}
|
||||
fn st_ctime(&self) -> i64 {
|
||||
self.as_inner().as_inner().st_ctime as i64
|
||||
}
|
||||
fn st_ctime_nsec(&self) -> i64 {
|
||||
self.as_inner().as_inner().st_ctime_nsec as i64
|
||||
}
|
||||
fn st_blksize(&self) -> u64 {
|
||||
self.as_inner().as_inner().st_blksize as u64
|
||||
}
|
||||
fn st_blocks(&self) -> u64 {
|
||||
self.as_inner().as_inner().st_blocks as u64
|
||||
}
|
||||
fn st_birthtime(&self) -> i64 {
|
||||
self.as_inner().as_inner().st_birthtime as i64
|
||||
}
|
||||
fn st_birthtime_nsec(&self) -> i64 {
|
||||
self.as_inner().as_inner().st_birthtime_nsec as i64
|
||||
}
|
||||
}
|
||||
4
library/std/src/os/cygwin/mod.rs
Normal file
4
library/std/src/os/cygwin/mod.rs
Normal file
@@ -0,0 +1,4 @@
|
||||
//! Cygwin-specific definitions
|
||||
#![stable(feature = "raw_ext", since = "1.1.0")]
|
||||
pub mod fs;
|
||||
pub mod raw;
|
||||
70
library/std/src/os/cygwin/raw.rs
Normal file
70
library/std/src/os/cygwin/raw.rs
Normal file
@@ -0,0 +1,70 @@
|
||||
//! Cygwin-specific raw type definitions
|
||||
#![stable(feature = "raw_ext", since = "1.1.0")]
|
||||
#![deprecated(
|
||||
since = "1.8.0",
|
||||
note = "these type aliases are no longer supported by \
|
||||
the standard library, the `libc` crate on \
|
||||
crates.io should be used instead for the correct \
|
||||
definitions"
|
||||
)]
|
||||
#![allow(deprecated)]
|
||||
use crate::os::raw::{c_long, c_void};
|
||||
#[stable(feature = "raw_ext", since = "1.1.0")]
|
||||
pub type blkcnt_t = i64;
|
||||
#[stable(feature = "raw_ext", since = "1.1.0")]
|
||||
pub type blksize_t = i32;
|
||||
#[stable(feature = "raw_ext", since = "1.1.0")]
|
||||
pub type dev_t = u32;
|
||||
#[stable(feature = "raw_ext", since = "1.1.0")]
|
||||
pub type ino_t = u64;
|
||||
#[stable(feature = "raw_ext", since = "1.1.0")]
|
||||
pub type mode_t = u32;
|
||||
#[stable(feature = "raw_ext", since = "1.1.0")]
|
||||
pub type nlink_t = u16;
|
||||
#[stable(feature = "raw_ext", since = "1.1.0")]
|
||||
pub type off_t = i64;
|
||||
#[stable(feature = "raw_ext", since = "1.1.0")]
|
||||
pub type time_t = i64;
|
||||
#[stable(feature = "pthread_t", since = "1.8.0")]
|
||||
pub type pthread_t = *mut c_void;
|
||||
#[repr(C)]
|
||||
#[derive(Clone)]
|
||||
#[stable(feature = "raw_ext", since = "1.1.0")]
|
||||
pub struct stat {
|
||||
#[stable(feature = "raw_ext", since = "1.1.0")]
|
||||
pub st_dev: dev_t,
|
||||
#[stable(feature = "raw_ext", since = "1.1.0")]
|
||||
pub st_ino: ino_t,
|
||||
#[stable(feature = "raw_ext", since = "1.1.0")]
|
||||
pub st_mode: mode_t,
|
||||
#[stable(feature = "raw_ext", since = "1.1.0")]
|
||||
pub st_nlink: nlink_t,
|
||||
#[stable(feature = "raw_ext", since = "1.1.0")]
|
||||
pub st_uid: u32,
|
||||
#[stable(feature = "raw_ext", since = "1.1.0")]
|
||||
pub st_gid: u32,
|
||||
#[stable(feature = "raw_ext", since = "1.1.0")]
|
||||
pub st_rdev: dev_t,
|
||||
#[stable(feature = "raw_ext", since = "1.1.0")]
|
||||
pub st_size: off_t,
|
||||
#[stable(feature = "raw_ext", since = "1.1.0")]
|
||||
pub st_atime: time_t,
|
||||
#[stable(feature = "raw_ext", since = "1.1.0")]
|
||||
pub st_atime_nsec: c_long,
|
||||
#[stable(feature = "raw_ext", since = "1.1.0")]
|
||||
pub st_mtime: time_t,
|
||||
#[stable(feature = "raw_ext", since = "1.1.0")]
|
||||
pub st_mtime_nsec: c_long,
|
||||
#[stable(feature = "raw_ext", since = "1.1.0")]
|
||||
pub st_ctime: time_t,
|
||||
#[stable(feature = "raw_ext", since = "1.1.0")]
|
||||
pub st_ctime_nsec: c_long,
|
||||
#[stable(feature = "raw_ext", since = "1.1.0")]
|
||||
pub st_blksize: blksize_t,
|
||||
#[stable(feature = "raw_ext", since = "1.1.0")]
|
||||
pub st_blocks: blkcnt_t,
|
||||
#[stable(feature = "raw_ext", since = "1.1.0")]
|
||||
pub st_birthtime: time_t,
|
||||
#[stable(feature = "raw_ext", since = "1.1.0")]
|
||||
pub st_birthtime_nsec: c_long,
|
||||
}
|
||||
@@ -125,6 +125,8 @@ pub mod windows;
|
||||
pub mod aix;
|
||||
#[cfg(target_os = "android")]
|
||||
pub mod android;
|
||||
#[cfg(target_os = "cygwin")]
|
||||
pub mod cygwin;
|
||||
#[cfg(target_os = "dragonfly")]
|
||||
pub mod dragonfly;
|
||||
#[cfg(target_os = "emscripten")]
|
||||
|
||||
@@ -41,6 +41,8 @@ mod platform {
|
||||
pub use crate::os::aix::*;
|
||||
#[cfg(target_os = "android")]
|
||||
pub use crate::os::android::*;
|
||||
#[cfg(target_os = "cygwin")]
|
||||
pub use crate::os::cygwin::*;
|
||||
#[cfg(target_vendor = "apple")]
|
||||
pub use crate::os::darwin::*;
|
||||
#[cfg(target_os = "dragonfly")]
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
target_os = "illumos",
|
||||
target_os = "haiku",
|
||||
target_os = "nto",
|
||||
target_os = "cygwin"
|
||||
))]
|
||||
use libc::MSG_NOSIGNAL;
|
||||
|
||||
@@ -37,6 +38,7 @@ use crate::{fmt, io};
|
||||
target_os = "illumos",
|
||||
target_os = "haiku",
|
||||
target_os = "nto",
|
||||
target_os = "cygwin"
|
||||
)))]
|
||||
const MSG_NOSIGNAL: core::ffi::c_int = 0x0;
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@ mod tests;
|
||||
target_os = "openbsd",
|
||||
target_os = "nto",
|
||||
target_vendor = "apple",
|
||||
target_os = "cygwin"
|
||||
))]
|
||||
mod ucred;
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ use super::{SocketAncillary, recv_vectored_with_ancillary_from, send_vectored_wi
|
||||
target_os = "openbsd",
|
||||
target_os = "nto",
|
||||
target_vendor = "apple",
|
||||
target_os = "cygwin"
|
||||
))]
|
||||
use super::{UCred, peer_cred};
|
||||
use crate::fmt;
|
||||
@@ -231,6 +232,7 @@ impl UnixStream {
|
||||
target_os = "openbsd",
|
||||
target_os = "nto",
|
||||
target_vendor = "apple",
|
||||
target_os = "cygwin"
|
||||
))]
|
||||
pub fn peer_cred(&self) -> io::Result<UCred> {
|
||||
peer_cred(self)
|
||||
|
||||
@@ -33,10 +33,10 @@ pub(super) use self::impl_apple::peer_cred;
|
||||
target_os = "nto"
|
||||
))]
|
||||
pub(super) use self::impl_bsd::peer_cred;
|
||||
#[cfg(any(target_os = "android", target_os = "linux"))]
|
||||
#[cfg(any(target_os = "android", target_os = "linux", target_os = "cygwin"))]
|
||||
pub(super) use self::impl_linux::peer_cred;
|
||||
|
||||
#[cfg(any(target_os = "linux", target_os = "android"))]
|
||||
#[cfg(any(target_os = "linux", target_os = "android", target_os = "cygwin"))]
|
||||
mod impl_linux {
|
||||
use libc::{SO_PEERCRED, SOL_SOCKET, c_void, getsockopt, socklen_t, ucred};
|
||||
|
||||
|
||||
@@ -543,7 +543,7 @@ impl FileAttr {
|
||||
SystemTime::new(self.stat.st_atim.tv_sec as i64, self.stat.st_atim.tv_nsec as i64)
|
||||
}
|
||||
|
||||
#[cfg(any(target_os = "freebsd", target_os = "openbsd", target_vendor = "apple"))]
|
||||
#[cfg(any(target_os = "freebsd", target_os = "openbsd", target_vendor = "apple", target_os = "cygwin"))]
|
||||
pub fn created(&self) -> io::Result<SystemTime> {
|
||||
SystemTime::new(self.stat.st_birthtime as i64, self.stat.st_birthtime_nsec as i64)
|
||||
}
|
||||
@@ -553,6 +553,7 @@ impl FileAttr {
|
||||
target_os = "openbsd",
|
||||
target_os = "vita",
|
||||
target_vendor = "apple",
|
||||
target_os = "cygwin",
|
||||
)))]
|
||||
pub fn created(&self) -> io::Result<SystemTime> {
|
||||
cfg_has_statx! {
|
||||
@@ -960,6 +961,7 @@ impl DirEntry {
|
||||
|
||||
#[cfg(any(
|
||||
target_os = "linux",
|
||||
target_os = "cygwin",
|
||||
target_os = "emscripten",
|
||||
target_os = "android",
|
||||
target_os = "solaris",
|
||||
@@ -1220,6 +1222,7 @@ impl File {
|
||||
target_os = "freebsd",
|
||||
target_os = "fuchsia",
|
||||
target_os = "linux",
|
||||
target_os = "cygwin",
|
||||
target_os = "android",
|
||||
target_os = "netbsd",
|
||||
target_os = "openbsd",
|
||||
@@ -1234,6 +1237,7 @@ impl File {
|
||||
target_os = "fuchsia",
|
||||
target_os = "freebsd",
|
||||
target_os = "linux",
|
||||
target_os = "cygwin",
|
||||
target_os = "netbsd",
|
||||
target_os = "openbsd",
|
||||
target_os = "nto",
|
||||
|
||||
@@ -59,7 +59,8 @@ cfg_if::cfg_if! {
|
||||
target_os = "dragonfly", target_os = "freebsd",
|
||||
target_os = "openbsd", target_os = "netbsd",
|
||||
target_os = "solaris", target_os = "illumos",
|
||||
target_os = "haiku", target_os = "nto"))] {
|
||||
target_os = "haiku", target_os = "nto",
|
||||
target_os = "cygwin"))] {
|
||||
use libc::MSG_NOSIGNAL;
|
||||
} else {
|
||||
const MSG_NOSIGNAL: c_int = 0x0;
|
||||
|
||||
@@ -81,6 +81,7 @@ impl Socket {
|
||||
target_os = "linux",
|
||||
target_os = "netbsd",
|
||||
target_os = "openbsd",
|
||||
target_os = "cygwin",
|
||||
target_os = "nto",
|
||||
target_os = "solaris",
|
||||
))] {
|
||||
@@ -128,6 +129,7 @@ impl Socket {
|
||||
target_os = "hurd",
|
||||
target_os = "netbsd",
|
||||
target_os = "openbsd",
|
||||
target_os = "cygwin",
|
||||
target_os = "nto",
|
||||
))] {
|
||||
// Like above, set cloexec atomically
|
||||
@@ -257,6 +259,7 @@ impl Socket {
|
||||
target_os = "hurd",
|
||||
target_os = "netbsd",
|
||||
target_os = "openbsd",
|
||||
target_os = "cygwin",
|
||||
))] {
|
||||
unsafe {
|
||||
let fd = cvt_r(|| libc::accept4(self.as_raw_fd(), storage, len, libc::SOCK_CLOEXEC))?;
|
||||
|
||||
@@ -100,6 +100,7 @@ impl DoubleEndedIterator for Args {
|
||||
target_os = "dragonfly",
|
||||
target_os = "netbsd",
|
||||
target_os = "openbsd",
|
||||
target_os = "cygwin",
|
||||
target_os = "solaris",
|
||||
target_os = "illumos",
|
||||
target_os = "emscripten",
|
||||
|
||||
@@ -108,6 +108,17 @@ pub mod os {
|
||||
pub const EXE_EXTENSION: &str = "";
|
||||
}
|
||||
|
||||
#[cfg(target_os = "cygwin")]
|
||||
pub mod os {
|
||||
pub const FAMILY: &str = "unix";
|
||||
pub const OS: &str = "cygwin";
|
||||
pub const DLL_PREFIX: &str = "";
|
||||
pub const DLL_SUFFIX: &str = ".dll";
|
||||
pub const DLL_EXTENSION: &str = "dll";
|
||||
pub const EXE_SUFFIX: &str = ".exe";
|
||||
pub const EXE_EXTENSION: &str = "exe";
|
||||
}
|
||||
|
||||
#[cfg(target_os = "android")]
|
||||
pub mod os {
|
||||
pub const FAMILY: &str = "unix";
|
||||
|
||||
@@ -47,6 +47,7 @@ const READ_LIMIT: usize = if cfg!(target_vendor = "apple") {
|
||||
target_os = "netbsd",
|
||||
target_os = "openbsd",
|
||||
target_vendor = "apple",
|
||||
target_os = "cygwin",
|
||||
))]
|
||||
const fn max_iov() -> usize {
|
||||
libc::IOV_MAX as usize
|
||||
@@ -500,6 +501,7 @@ impl FileDesc {
|
||||
target_os = "fuchsia",
|
||||
target_os = "l4re",
|
||||
target_os = "linux",
|
||||
target_os = "cygwin",
|
||||
target_os = "haiku",
|
||||
target_os = "redox",
|
||||
target_os = "vxworks",
|
||||
@@ -522,6 +524,7 @@ impl FileDesc {
|
||||
target_os = "fuchsia",
|
||||
target_os = "l4re",
|
||||
target_os = "linux",
|
||||
target_os = "cygwin",
|
||||
target_os = "haiku",
|
||||
target_os = "redox",
|
||||
target_os = "vxworks",
|
||||
|
||||
@@ -380,7 +380,7 @@ cfg_if::cfg_if! {
|
||||
#[link(name = "pthread")]
|
||||
#[link(name = "rt")]
|
||||
unsafe extern "C" {}
|
||||
} else if #[cfg(any(target_os = "dragonfly", target_os = "openbsd"))] {
|
||||
} else if #[cfg(any(target_os = "dragonfly", target_os = "openbsd", target_os = "cygwin"))] {
|
||||
#[link(name = "pthread")]
|
||||
unsafe extern "C" {}
|
||||
} else if #[cfg(target_os = "solaris")] {
|
||||
|
||||
@@ -46,6 +46,7 @@ unsafe extern "C" {
|
||||
any(
|
||||
target_os = "netbsd",
|
||||
target_os = "openbsd",
|
||||
target_os = "cygwin",
|
||||
target_os = "android",
|
||||
target_os = "redox",
|
||||
target_os = "nuttx",
|
||||
@@ -395,6 +396,7 @@ pub fn current_exe() -> io::Result<PathBuf> {
|
||||
|
||||
#[cfg(any(
|
||||
target_os = "linux",
|
||||
target_os = "cygwin",
|
||||
target_os = "hurd",
|
||||
target_os = "android",
|
||||
target_os = "nuttx",
|
||||
|
||||
@@ -27,6 +27,7 @@ pub fn anon_pipe() -> io::Result<(AnonPipe, AnonPipe)> {
|
||||
target_os = "linux",
|
||||
target_os = "netbsd",
|
||||
target_os = "openbsd",
|
||||
target_os = "cygwin",
|
||||
target_os = "redox"
|
||||
))] {
|
||||
unsafe {
|
||||
|
||||
@@ -1154,7 +1154,7 @@ fn signal_string(signal: i32) -> &'static str {
|
||||
)
|
||||
))]
|
||||
libc::SIGSTKFLT => " (SIGSTKFLT)",
|
||||
#[cfg(any(target_os = "linux", target_os = "nto"))]
|
||||
#[cfg(any(target_os = "linux", target_os = "nto", target_os = "cygwin"))]
|
||||
libc::SIGPWR => " (SIGPWR)",
|
||||
#[cfg(any(
|
||||
target_os = "freebsd",
|
||||
@@ -1163,6 +1163,7 @@ fn signal_string(signal: i32) -> &'static str {
|
||||
target_os = "dragonfly",
|
||||
target_os = "nto",
|
||||
target_vendor = "apple",
|
||||
target_os = "cygwin",
|
||||
))]
|
||||
libc::SIGEMT => " (SIGEMT)",
|
||||
#[cfg(any(
|
||||
|
||||
@@ -32,6 +32,7 @@ impl Drop for Handler {
|
||||
target_os = "macos",
|
||||
target_os = "netbsd",
|
||||
target_os = "openbsd",
|
||||
target_os = "cygwin",
|
||||
target_os = "solaris",
|
||||
target_os = "illumos",
|
||||
))]
|
||||
@@ -583,6 +584,7 @@ mod imp {
|
||||
target_os = "macos",
|
||||
target_os = "netbsd",
|
||||
target_os = "openbsd",
|
||||
target_os = "cygwin",
|
||||
target_os = "solaris",
|
||||
target_os = "illumos",
|
||||
)))]
|
||||
|
||||
@@ -137,7 +137,8 @@ impl Thread {
|
||||
target_os = "linux",
|
||||
target_os = "freebsd",
|
||||
target_os = "dragonfly",
|
||||
target_os = "nuttx"
|
||||
target_os = "nuttx",
|
||||
target_os = "cygwin"
|
||||
))]
|
||||
pub fn set_name(name: &CStr) {
|
||||
unsafe {
|
||||
@@ -343,6 +344,7 @@ impl Drop for Thread {
|
||||
target_os = "illumos",
|
||||
target_os = "vxworks",
|
||||
target_vendor = "apple",
|
||||
target_os = "cygwin",
|
||||
))]
|
||||
fn truncate_cstr<const MAX_WITH_NUL: usize>(cstr: &CStr) -> [libc::c_char; MAX_WITH_NUL] {
|
||||
let mut result = [0; MAX_WITH_NUL];
|
||||
@@ -362,6 +364,7 @@ pub fn available_parallelism() -> io::Result<NonZero<usize>> {
|
||||
target_os = "linux",
|
||||
target_os = "aix",
|
||||
target_vendor = "apple",
|
||||
target_os = "cygwin",
|
||||
))] {
|
||||
#[allow(unused_assignments)]
|
||||
#[allow(unused_mut)]
|
||||
|
||||
Reference in New Issue
Block a user