#![cfg_attr(feature = "doc_cfg", feature(doc_cfg))]
#![deny(rust_2018_idioms)]
#![warn(missing_docs)]
#![allow(clippy::nonstandard_macro_braces)]
#![cfg_attr(
unsafe_op_in_unsafe_fn_stable, // This is set by the build script on Rust 1.52+
forbid(unsafe_op_in_unsafe_fn),
)]
#![cfg_attr(not(unsafe_op_in_unsafe_fn_stable), allow(unused_unsafe))]
#[cfg(not(any(
// "Linux-like" (src/unix/linux_like/mod.rs in libc)
target_os = "linux",
target_os = "android",
target_os = "emscripten",
// Windows. There is just one.
target_os = "windows",
// "BSD-like" (src/unix/bsd/mod.rs in libc)
target_os = "freebsd",
target_os = "openbsd",
target_os = "netbsd",
target_os = "dragonfly",
target_os = "macos",
target_os = "ios",
// "Solarish" (src/unix/solarish/mod.rs in libc)
target_os = "solaris",
target_os = "illumos",
// Haiku (src/unix/haiku/mod.rs in libc)
target_os = "haiku",
// Hermit (src/unix/hermit/mod.rs in libc)
target_os = "hermit",
// Redox (src/unix/redox/mod.rs in libc)
target_os = "redox",
)))]
compile_error!("Your target operating system is not supported by interprocess – check if yours is in the list of supported systems, and if not, please open an issue on the GitHub repository if you think that it should be included");
#[cfg(not(any(target_pointer_width = "32", target_pointer_width = "64")))]
compile_error!("Platforms with exotic pointer widths (neither 32-bit nor 64-bit) are not supported by interprocess – if you think that your specific case needs to be accounted for, please open an issue on the GitHub repository");
#[macro_use]
mod macros;
pub mod local_socket;
#[cfg(any(doc, feature = "nonblocking"))]
#[cfg_attr(feature = "doc_cfg", doc(cfg(feature = "nonblocking")))]
#[deprecated(note = "\
does not integrate with async runtimes, leading to poor performance and bugs related to reading \
and writing at the same time (you can't) – see the `tokio` modules for relevant IPC primitives \
or open an issue if you want more async runtimes to be supported as well")]
pub mod nonblocking;
pub mod unnamed_pipe;
pub mod os;
mod sealed;
pub(crate) use sealed::Sealed;
mod reliable_read_msg;
pub use reliable_read_msg::*;