xref: /drstd/src/std/os/wasi/mod.rs (revision 0fe3ff0054d3aec7fbf9bddecfecb10bc7d23a51)
1 //! Platform-specific extensions to `std` for the WebAssembly System Interface (WASI).
2 //!
3 //! Provides access to platform-level information on WASI, and exposes
4 //! WASI-specific functions that would otherwise be inappropriate as
5 //! part of the core `std` library.
6 //!
7 //! It exposes more ways to deal with platform-specific strings (`OsStr`,
8 //! `OsString`), allows to set permissions more granularly, extract low-level
9 //! file descriptors from files and sockets, and has platform-specific helpers
10 //! for spawning processes.
11 //!
12 //! # Examples
13 //!
14 //! ```no_run
15 //! use std::fs::File;
16 //! use std::os::wasi::prelude::*;
17 //!
18 //! fn main() -> std::io::Result<()> {
19 //!     let f = File::create("foo.txt")?;
20 //!     let fd = f.as_raw_fd();
21 //!
22 //!     // use fd with native WASI bindings
23 //!
24 //!     Ok(())
25 //! }
26 //! ```
27 //!
28 //! [`OsStr`]: crate::std::ffi::OsStr
29 //! [`OsString`]: crate::std::ffi::OsString
30 
31 #![deny(unsafe_op_in_unsafe_fn)]
32 #![doc(cfg(target_os = "wasi"))]
33 
34 pub mod ffi;
35 pub mod fs;
36 pub mod io;
37 pub mod net;
38 
39 /// A prelude for conveniently writing platform-specific code.
40 ///
41 /// Includes all extension traits, and some important type definitions.
42 pub mod prelude {
43     #[doc(no_inline)]
44     pub use super::ffi::{OsStrExt, OsStringExt};
45     #[doc(no_inline)]
46     pub use super::fs::FileTypeExt;
47     #[doc(no_inline)]
48     pub use super::fs::{DirEntryExt, FileExt, MetadataExt, OpenOptionsExt};
49     #[doc(no_inline)]
50     pub use super::io::{AsFd, AsRawFd, BorrowedFd, FromRawFd, IntoRawFd, OwnedFd, RawFd};
51 }
52