在内部,async fn创建一个状态机类型,其中包含每个正在等待的子Future。那么,当涉及到递归的时候怎么办呢?
示例
示例1
- 源码
- 配置
- 说明
编译器会async块生成对应的结构体,上面的例子生成的结构体如下:
示例2
那么,当对应到递归会是什么样的呢?
- 源码
- 说明
运行该程序报错。编译器对应的展开可能如下:
显然,这样创造了一个无限尺寸大小的类型,因此报错。
解决办法
那么我们要使用递归怎么办?只需要使用Box就可以了,不过对应的限制是需要变成同步函数。
- 源码
- 配置
运行ok。
在内部,async fn创建一个状态机类型,其中包含每个正在等待的子Future。那么,当涉及到递归的时候怎么办呢?
编译器会async块生成对应的结构体,上面的例子生成的结构体如下:
那么,当对应到递归会是什么样的呢?
运行该程序报错。编译器对应的展开可能如下:
显然,这样创造了一个无限尺寸大小的类型,因此报错。
那么我们要使用递归怎么办?只需要使用Box就可以了,不过对应的限制是需要变成同步函数。
运行ok。
功能介绍本实例主要是使用lettre和letter-email实现在程序中发送邮件的功能。准备工作环境说
前言我们之前已经学习过Rust编程基础相关的一些知识,下面进入到Rust异步编程的学习,本节主
为了对Future调用poll,需要使用到Pin的特殊类型。本节就介绍一下Pin类型。异步背后的一些原
在Rust异步块中,当发生返回错误的时,会是怎么样的呢?本节就这个知识点进行讲解。示例源码u
Stream 介绍Stream和Future类似,但是Future对应的是一个item的状态的变化,而Stream则是类
async fn Future是否为Send的取决于是否在.await点上保留非Send类型。编译器尽其所能地
select宏select宏也允许并发的执行Future,但是和join、try_join不同的是,select宏只要有一个Future
前言在之前我们主要介绍了通过await和block_on执行Future,但是这两种方式实际上都是顺序执行
此节对async/await做简单介绍,旨在让大家有一个简单的认识。作用async/.await是Rust编写异步异步函数
Future介绍Future是Rust异步编程的核心,Rust异步编程基本都是围绕Future来展开。那么,什么
举报文章
请选择举报类型
补充说明
0/200
上传截图
格式支持JPEG/PNG/JPG,图片不超过1.9M