1#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))]
4#![warn(missing_docs)]
5#![cfg_attr(feature = "read_buf", feature(read_buf, core_io_borrowed_buf))]
6#![cfg_attr(
7 all(windows, feature = "windows_by_handle"),
8 feature(windows_by_handle)
9)]
10
11mod file;
12pub use file::*;
13
14mod open_options;
15pub use open_options::*;
16
17mod metadata;
18pub use metadata::*;
19
20mod stdio;
21pub use stdio::*;
22
23mod utils;
24pub use utils::*;
25
26mod async_fd;
27pub use async_fd::*;
28
29#[cfg(windows)]
30pub mod named_pipe;
31
32#[cfg(unix)]
33pub mod pipe;
34
35#[cfg(unix)]
36pub(crate) fn path_string(path: impl AsRef<std::path::Path>) -> std::io::Result<std::ffi::CString> {
37 use std::os::unix::ffi::OsStrExt;
38
39 std::ffi::CString::new(path.as_ref().as_os_str().as_bytes().to_vec()).map_err(|_| {
40 std::io::Error::new(
41 std::io::ErrorKind::InvalidInput,
42 "file name contained an unexpected NUL byte",
43 )
44 })
45}