Skip to main content

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))]
23#![allow(unused_features)]
24#![warn(missing_docs)]
25#![deny(rustdoc::broken_intra_doc_links)]
26#![doc(
27    html_logo_url = "https://github.com/compio-rs/compio-logo/raw/refs/heads/master/generated/colored-bold.svg"
28)]
29#![doc(
30    html_favicon_url = "https://github.com/compio-rs/compio-logo/raw/refs/heads/master/generated/colored-bold.svg"
31)]
32
33#[doc(no_inline)]
34pub use buf::BufResult;
35#[cfg(feature = "arrayvec")]
36pub use buf::arrayvec;
37#[cfg(feature = "bumpalo")]
38pub use buf::bumpalo;
39#[cfg(feature = "bytes")]
40pub use buf::bytes;
41#[cfg(feature = "dispatcher")]
42#[doc(inline)]
43pub use compio_dispatcher as dispatcher;
44#[cfg(feature = "fs")]
45#[doc(inline)]
46pub use compio_fs as fs;
47#[cfg(feature = "io")]
48#[doc(inline)]
49pub use compio_io as io;
50#[cfg(feature = "macros")]
51pub use compio_macros::*;
52#[cfg(feature = "net")]
53#[doc(inline)]
54pub use compio_net as net;
55#[cfg(feature = "process")]
56#[doc(inline)]
57pub use compio_process as process;
58#[cfg(feature = "quic")]
59#[doc(inline)]
60pub use compio_quic as quic;
61#[cfg(feature = "runtime")]
62#[doc(inline)]
63pub use compio_runtime as runtime;
64#[cfg(feature = "signal")]
65#[doc(inline)]
66pub use compio_signal as signal;
67#[cfg(feature = "tls")]
68#[doc(inline)]
69pub use compio_tls as tls;
70#[cfg(feature = "ws")]
71#[doc(inline)]
72pub use compio_ws as ws;
73#[cfg(feature = "time")]
74#[doc(inline)]
75pub use runtime::time;
76#[cfg(feature = "native-tls")]
77pub use tls::native_tls;
78#[cfg(feature = "rustls")]
79pub use tls::rustls;
80#[doc(inline)]
81pub use {compio_buf as buf, compio_driver as driver};