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