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
//! Cross-platform socketpair functionality //! //! A socketpair stream is a bidirectional bytestream. The `socketpair_stream` //! function creates a pair of `SocketpairStream` objects connected to opposite //! ends of a stream, and both can be written to and read from. //! //! ```rust //! use socketpair::socketpair_stream; //! use std::{ //! io::{self, Read, Write}, //! thread, //! }; //! //! fn main() -> anyhow::Result<()> { //! let (mut a, mut b) = socketpair_stream()?; //! //! let _t = thread::spawn(move || -> io::Result<()> { writeln!(a, "hello world") }); //! //! let mut buf = String::new(); //! b.read_to_string(&mut buf)?; //! assert_eq!(buf, "hello world\n"); //! //! Ok(()) //! } //! ``` #![deny(missing_docs)] #![cfg_attr(can_vector, feature(can_vector))] #![cfg_attr(write_all_vectored, feature(write_all_vectored))] #[cfg(not(windows))] mod posish; #[cfg(windows)] mod windows; #[cfg(not(windows))] pub use crate::posish::{socketpair_stream, SocketpairStream}; #[cfg(windows)] pub use crate::windows::{socketpair_stream, SocketpairStream};