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 = "smallvec")]
42pub use buf::smallvec;
43#[cfg(feature = "compat")]
44pub use compio_compat as compat;
45#[cfg(feature = "dispatcher")]
46#[doc(inline)]
47pub use compio_dispatcher as dispatcher;
48#[cfg(feature = "fs")]
49#[doc(inline)]
50pub use compio_fs as fs;
51#[cfg(feature = "io")]
52#[doc(inline)]
53pub use compio_io as io;
54#[cfg(feature = "macros")]
55pub use compio_macros::*;
56#[cfg(feature = "net")]
57#[doc(inline)]
58pub use compio_net as net;
59#[cfg(feature = "process")]
60#[doc(inline)]
61pub use compio_process as process;
62#[cfg(feature = "quic")]
63#[doc(inline)]
64pub use compio_quic as quic;
65#[cfg(feature = "runtime")]
66#[doc(inline)]
67pub use compio_runtime as runtime;
68#[cfg(feature = "signal")]
69#[doc(inline)]
70pub use compio_signal as signal;
71#[cfg(feature = "tls")]
72#[doc(inline)]
73pub use compio_tls as tls;
74#[cfg(feature = "ws")]
75#[doc(inline)]
76pub use compio_ws as ws;
77#[cfg(feature = "time")]
78#[doc(inline)]
79pub use runtime::time;
80#[cfg(feature = "native-tls")]
81pub use tls::native_tls;
82#[cfg(feature = "rustls")]
83pub use tls::rustls;
84#[doc(inline)]
85pub use {compio_buf as buf, compio_driver as driver};