vlambda博客
学习文章列表

一张图搞懂Rust异步编程

         异步编程作为炙手可热的编程技术,使用Rust语言要实现异步编程,相对比较复杂,因为它涉及语言特性、标准库类型、第三方运行环境库等;现尝试用一张图让您搞懂Rust异步编程:


一张图搞懂Rust异步编程


补充说明上图涉及的内容:

语言特性相关:

async:作为Rust语言关键词,编译器通过将指定async修饰代码块去语法糖的形式生成GenFut对象及其对应可异步执行函数;


await:作为Rust语言关键词,编译器通过去语法糖的形式完成对GenFut对象的poll方法调用及内部状态的维护;


标准库类型相关

Future:定义一个Future对象需要实现的trait;

Context/Waker:提供Future对象poll方法调用参数定义及唤醒接口约定;

Pin:实现调用Future对象poll方法时对被调用对象的约束访问;


第三方库等相关

Future运行环境库:比如tokio/async-std,提供运行Future对象的运行环境,触发Future对象的异步执行、唤醒等;


pin-project库:对Pin机制的一种扩展,以方便实现子字段的Pin封装;


参考:

https://rust-lang.github.io/async-book/

https://cfsamson.github.io/books-futures-explained/