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
//! Imports from `std` that would be polyfilled for `no_std` builds (see
//! `src/polyfill/no_std`).
//!
//! This implementation is used when `std` is available and just imports the
//! necessary items from `std`. For `no_std` builds, the file
//! `src/polyfill/no_std` is used instead, which doesn't depend on the standard
//! library.

#[cfg(not(windows))]
pub mod io {
    pub use std::io::{IoSlice, IoSliceMut};
}

#[cfg(not(any(target_os = "redox", target_os = "wasi")))]
#[cfg(feature = "net")]
pub mod net {
    pub use std::net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr, SocketAddrV4, SocketAddrV6};
}

pub mod os {
    pub mod fd {
        // Change  to use `std::os::fd` when MSRV becomes 1.66 or higher.

        #[cfg(unix)]
        pub use std::os::unix::io::{
            AsFd, AsRawFd, BorrowedFd, FromRawFd, IntoRawFd, OwnedFd, RawFd,
        };
        #[cfg(target_os = "wasi")]
        pub use std::os::wasi::io::{
            AsFd, AsRawFd, BorrowedFd, FromRawFd, IntoRawFd, OwnedFd, RawFd,
        };
    }

    #[cfg(windows)]
    pub mod windows {
        pub mod io {
            pub use std::os::windows::io::{
                AsRawSocket, AsSocket, BorrowedSocket, FromRawSocket, IntoRawSocket, OwnedSocket,
                RawSocket,
            };
        }
    }
}