compio/
lib.rs

1//! # Compio
2//! A thread-per-core Rust runtime with IOCP/io_uring/polling.
3//! The name comes from "completion-based IO".
4//! This crate is inspired by [monoio](https://github.com/bytedance/monoio/).
5//!
6//! ## Quick start
7//! ```rust
8//! # compio::runtime::Runtime::new().unwrap().block_on(async {
9//! use compio::{fs::File, io::AsyncReadAtExt};
10//!
11//! let file = File::open("Cargo.toml").await.unwrap();
12//! let (read, buffer) = file
13//!     .read_to_end_at(Vec::with_capacity(1024), 0)
14//!     .await
15//!     .unwrap();
16//! assert_eq!(read, buffer.len());
17//! let buffer = String::from_utf8(buffer).unwrap();
18//! println!("{}", buffer);
19//! # })
20//! ```
21
22#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))]
23#![warn(missing_docs)]
24
25#[doc(no_inline)]
26pub use buf::BufResult;
27#[cfg(feature = "arrayvec")]
28pub use buf::arrayvec;
29#[cfg(feature = "bumpalo")]
30pub use buf::bumpalo;
31#[cfg(feature = "bytes")]
32pub use buf::bytes;
33#[cfg(feature = "dispatcher")]
34#[doc(inline)]
35pub use compio_dispatcher as dispatcher;
36#[cfg(feature = "io")]
37#[doc(inline)]
38pub use compio_io as io;
39#[cfg(feature = "macros")]
40pub use compio_macros::*;
41#[cfg(feature = "process")]
42#[doc(inline)]
43pub use compio_process as process;
44#[cfg(feature = "quic")]
45#[doc(inline)]
46pub use compio_quic as quic;
47#[cfg(feature = "signal")]
48#[doc(inline)]
49pub use compio_signal as signal;
50#[cfg(feature = "tls")]
51#[doc(inline)]
52pub use compio_tls as tls;
53#[cfg(feature = "event")]
54#[doc(no_inline)]
55pub use runtime::event;
56#[cfg(feature = "time")]
57#[doc(no_inline)]
58pub use runtime::time;
59#[cfg(feature = "native-tls")]
60pub use tls::native_tls;
61#[cfg(feature = "rustls")]
62pub use tls::rustls;
63#[doc(inline)]
64pub use {compio_buf as buf, compio_driver as driver};
65#[cfg(feature = "runtime")]
66#[doc(inline)]
67pub use {compio_fs as fs, compio_net as net, compio_runtime as runtime};