搜索你想找的开源项目

输入名称、用途或关键词,也可粘贴 GitHub 仓库链接

分享到微信

当前解读页的微信分享二维码

用微信扫一扫打开,点击右上角「···」分享给朋友或朋友圈。

手机上可截屏后,在微信扫一扫中从相册识别二维码。

tokio-rs/tokio

开发工具

为 Rust 异步应用提供任务调度、网络与定时器的运行时,适合编写高并发网络服务。

33,651
4,503
Rust
MIT
创建于 10 年前

项目介绍

Tokio 是一个事件驱动、非阻塞 I/O 的 Rust 运行时。Rust 语言本身只提供 async/await 语法,不附带执行器,Tokio 补上了异步应用需要的运行组件:多线程工作窃取任务调度器、基于操作系统事件队列(epoll、kqueue、IOCP 等)的 reactor,以及异步 TCP/UDP socket 概述。

它面向需要处理大量连接、定时器或并发的 Rust 开发者,典型场景是网络服务端和客户端。仓库内包含多个 crate:tokio、tokio-util、tokio-stream、tokio-macros 和 tokio-test,各自有独立更新日志 更新日志索引。

快速使用

在 Cargo 项目的依赖中启用完整特性:

[dependencies]
tokio = { version = "1.54.1", features = ["full"] }

然后在 main.rs 中写一个 TCP echo 服务。#[tokio::main] 宏负责创建运行时并驱动异步 main 函数 示例:

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];
            loop {
                let n = match socket.read(&mut buf).await {
                    Ok(0) => return,
                    Ok(n) => n,
                    Err(e) => { eprintln!("读取失败: {:?}", e); return; }
                };
                if let Err(e) = socket.write_all(&buf[0..n]).await {
                    eprintln!("写入失败: {:?}", e);
                    return;
                }
            }
        });
    }
}

cargo run 后连接 8080 端口,发送的数据应被原样回传。仓库的 examples 目录有更多示例,mini-redis 展示了更大的实际项目。完整的分步教程见 Tokio 官方教程。

特性开关与 API

Tokio 的功能按特性拆分,生产环境通常不应直接启用 full,而是按需开启。可用特性见 特性开关文档,完整 API 见 docs.rs。

版本与支持策略

项目采用滚动的最低 Rust 版本(MSRV)策略,新版本发布至今至少六个月才会提升 MSRV;当前 MSRV 为 Rust 1.85 支持版本。没有固定发版日程,通常每月一个次版本,Bug 修复按需发布补丁版本 发布节奏。

当前有两条 LTS 次版本线会持续接收回溯修复:1.51.x 支持到 2027 年 3 月,1.53.x 支持到 2027 年 9 月。需要固定次版本时,建议用波浪号指定,例如 tokio = { version = "~1.51", features = [...] } LTS 策略。

社区与相关项目

Tokio 项目还维护一批配套库,覆盖 HTTP(hyper)、gRPC(tonic)、Web 框架(axum、warp)、日志追踪(tracing)和底层 I/O(mio、bytes)等 相关项目。提问可前往 Tokio Discord 或 GitHub 讨论区。代码采用 MIT 许可证 许可证。

HotRepo 点评

在 2026-11-06 的 Rust 语言日榜上,Tokio 位列第 5,当日新增 89 Star,当时总 Star 为 33,618、Fork 为 4,500。更早的 2020 年 4 月它曾登上 Hacker News,获得 143 分和 58 条评论,维护者在帖中主动回答提问 HN 讨论。那轮讨论集中在两点:Rust 的 async/await 是否需要运行时,以及「零成本抽象」与全手写代码相比意味着什么 读者提问。这正是该项目的架构定位:语言提供异步语法,Tokio 提供让语法得以执行的调度器与 I/O 驱动。

本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。

Hacker News 讨论

Tokio: Runtime for writing reliable asynchronous applications with Rust
▲ 143 · 58 条评论 · 2020年4月26日
Sync: New internal semaphore based on intrusive lists
▲ 2 · 0 条评论 · 2020年3月27日