1//! Imports from `std` that would be polyfilled for `no_std` builds (see
2//! `src/polyfill/no_std`).
3//!
4//! This implementation is used when `std` is available and just imports the
5//! necessary items from `std`. For `no_std` builds, the file
6//! `src/polyfill/no_std` is used instead, which doesn't depend on the standard
7//! library.
8
9#[cfg(not(windows))]
10pub mod io {
11 pub use std::io::{IoSlice, IoSliceMut};
12}
13
14#[cfg(not(any(target_os = "redox", target_os = "wasi")))]
15#[cfg(feature = "net")]
16pub mod net {
17 pub use std::net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr, SocketAddrV4, SocketAddrV6};
18}
19
20pub mod os {
21 pub mod fd {
22 // Change to use `std::os::fd` when MSRV becomes 1.66 or higher.
23
24 #[cfg(unix)]
25 pub use std::os::unix::io::{
26 AsFd, AsRawFd, BorrowedFd, FromRawFd, IntoRawFd, OwnedFd, RawFd,
27 };
28 #[cfg(target_os = "wasi")]
29 pub use std::os::wasi::io::{
30 AsFd, AsRawFd, BorrowedFd, FromRawFd, IntoRawFd, OwnedFd, RawFd,
31 };
32 }
33
34 #[cfg(windows)]
35 pub mod windows {
36 pub mod io {
37 pub use std::os::windows::io::{
38 AsRawSocket, AsSocket, BorrowedSocket, FromRawSocket, IntoRawSocket, OwnedSocket,
39 RawSocket,
40 };
41 }
42 }
43}
44