rFTP - 用 Rust 实现简单的 FTP Server (2)
前情提要
在上一篇文章中,我讲述了我为什么选择 Rust 作为学习计算机底层知识的工具,一些 Rust 的基础知识和我当时所遇到的困难。在这篇又是属于目标回收的文章中,我将介绍最近的进展、Rust 开发的体验和下一步的计划。总的来说,用 Rust 写项目体验尚可,通过与编译器博弈而最终通过“考试”后,自己对 Rust 的理解也有了些许提升。
异步编程
在 Rust 中,异步编程是通过 Future
特征和 async/await
语法糖来实现的。Future
是 Rust 中的异步编程的基础,它代表了一个异步计算的结果或者异步任务的“承诺”,可以通过 poll
方法来获取计算的结果。async/await
语法糖则是为了让异步编程更加友好,通过 async
关键字来定义异步函数,通过 await
关键字来等待异步计算的结果。
越来越多的语言采纳异步编程机制,比如 Python 的 asyncio
、JavaScript 的 Promise
(或者是同样的 async/await
)、Golang 的 goroutine
等等。异步编程的优势在于可以提高程序的并发性能,因为异步编程可以让程序在等待 I/O 操作的时候不阻塞,可以继续执行其他任务。Rust 的 Tokio 是一个基于 Future
的异步编程框架,它提供了很多异步编程的工具,比如 tokio::spawn
、tokio::net::TcpStream
等等。