一个使用 Rust 编程语言编写可靠、异步且精简应用程序的运行时。
Tokio 是一个事件驱动的非阻塞 I/O 平台,用于使用 Rust 编程语言编写异步应用程序。概括而言,它提供了以下几个主要组件:
这些组件提供了构建异步应用程序所需的运行时组件。
[net]:https://docs.rs/tokio/latest/tokio/net/index.html
[scheduler]:https://docs.rs/tokio/latest/tokio/runtime/index.html
使用 Tokio 构建一个基本的 TCP 回显服务器。
请确保您在 Cargo.toml 上激活了 tokio crate 的全部功能:
[dependencies]
tokio = { version = "1.48.0", features = ["full"] }
Then, on your main.rs:
use tokio::net::TcpListener;
use tokio::io::{AsyncReadExt, AsyncWriteExt};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let listener = TcpListener::bind("127.0.0.1:8080").await?;
loop {
let (mut socket, _) = listener.accept().await?;
tokio::spawn(async move {
let mut buf = [0; 1024];
// In a loop, read data from the socket and write the data back.
loop {
let n = match socket.read(&mut buf).await {
// socket closed
Ok(0) => return,
Ok(n) => n,
Err(e) => {
eprintln!("failed to read from socket; err = {:?}", e);
return;
}
};
// Write the data back
if let Err(e) = socket.write_all(&buf[0..n]).await {
eprintln!("failed to write to socket; err = {:?}", e);
return;
}
}
});
}
}
如需更详细的“真实世界”示例,请参阅[mini-redis] 代码库。
[示例]:https://github.com/tokio-rs/tokio/tree/master/examples
[mini-redis]:https://github.com/tokio-rs/mini-redis/
如需查看可启用的功能标志列表,请查看我们的文档。
首先,请查看您的问题的答案是否可以在指南或API 文档中找到。如果没有找到答案,请在Tokio Discord 服务器中咨询一个活跃的社区。我们很乐意尝试回答您的问题。您也可以在讨论页面讨论上提问。
感谢您对改进项目的帮助!我们非常高兴您能来!我们准备了一份贡献指南,帮助您参与 Tokio项目。
除了本仓库中的 crate 之外,Tokio 项目还维护着其他几个库,包括:
axum:一个专注于人体工程学和模块化的 Web 应用程序框架。
hyper:一个快速且准确的 Rust HTTP/1.1 和 HTTP/2 实现。
tonic:一个基于 HTTP/2 的 gRPC 实现,专注于高性能、互操作性和灵活性。
warp:一个超级简单、可组合的 Web 服务器框架,速度飞快。
tower:一个模块化且可重用组件库,用于构建强大的网络客户端和服务器。
tracing(原名tokio-trace):一个用于应用程序级跟踪和异步感知诊断的框架。
mio:基于操作系统 I/O API 的低级跨平台抽象,为 tokio 提供支持。
bytes:用于处理字节的实用程序,包括高效的字节缓冲区。
loom:用于并发 Rust 代码的测试工具。
Tokio 将保持至少 6 个月的滚动 MSRV(最低支持 Rust 版本)政策。提升 MSRV 时,新的 Rust 版本必须至少在六个月前发布。当前的 MSRV 为 1.71。
请注意,MSRV 不会自动提升,只会作为小版本发布的一部分。过去次要版本的 MSRV 历史记录如下:
请注意,尽管我们尽量避免依赖项间接增加 Tokio 的 MSRV 的情况,但我们不保证这种情况不会发生。但是,每个次要版本都会包含一些与该次要版本的 MSRV 兼容的依赖项版本。
Tokio 没有固定的发布时间表,但我们通常每月发布一个次要版本。我们会根据需要发布补丁版本来修复错误。
为了发布包含错误修复的补丁版本,我们指定了某些次要版本作为 LTS(长期支持)版本。如果某个错误需要发布包含该错误修复的补丁版本,我们会将其反向移植并作为每个 LTS 次要版本的新补丁版本发布。我们目前的 LTS版本如下:
1.43.x - LTS 版本,有效期至 2026 年 3 月。(MSRV 1.70)1.47.x - LTS 版本,有效期至 2026 年 9 月。(MSRV 1.70)每个 LTS 版本将继续接收反向移植的修复,持续至少一年。如果您希望在项目中使用已修复的次要版本,我们建议您使用 LTS 版本。
要使用固定的次要版本,您可以使用波浪号指定版本。例如,要指定您希望使用最新的 1.43.x 补丁版本,您可以使用以下依赖项规范:
tokio = { version = "~1.43", features = [...] }
1.8.x - LTS 版本有效期至 2022 年 2 月。1.14.x - LTS 版本有效期至 2022 年 6 月。1.18.x - LTS 版本有效期至 2023 年 6 月。1.20.x - LTS 版本有效期至 2023 年 9 月。1.25.x - LTS 版本有效期至 2024 年 3 月。1.32.x - LTS 版本有效期至 2024 年 9 月。1.36.x - LTS 版本有效期至 2025 年 3 月。1.38.x - LTS 版本有效期至 2025 年 7 月。本项目采用 MIT 许可证。