现在有一段时间,我对着名的博文有一种爱恨 - 关系你的功能是什么颜色的?
一方面是它' SA伟大的文章击中了钉子的钉子为什么在js(和其他语言)中使用异步/等待是非常痛苦的,它为我们提供了&#34的伟大寓言;彩色函数&# 34;
另一方面,由于文章已被广为人知,人们使用彩色函数的参数在所有异步/等待的实现中静音,无论是适用还是不适用。特别是它似乎是一个经常出现的谈话点,讨论了生锈'即使是异步/等待的讨论 - 你可能已经猜到了 - 它' t申请!
所以,让' s在原始帖子中查看论点,并查看它在哪里损坏生锈:
我猜这也是真的。您通常会称为foo()等正常函数,大部分时间都会调用aryync函数,如bar()。等待。
彩色函数是有问题的,因为它们也将所有触摸到同一个颜色的一切。想要在彩色编程语言中彩色函数?玩得开心转动调用它的每个功能(并且调用它们,等等)相同的颜色!
然而,这不是锈病的问题!在Rust中,您可以轻松限制着色到您想要的代码的一部分,并执行它非常简单:
想要从同步功能封锁中封锁的异步功能? - >把它扔在刽子手!
想要从异步函数调用同步功能? - >只要正常拨打电话,或者它会阻止您的异步函数将其生成它作为阻塞任务! Async-std变体,tokio变体和i' m确定您的异步运行时选择有类似的东西。
当然,你应该一直在'这两件事都是所有的事情,或者你将失去第一个地方使用异步的好处!然而,有时候你真的有一个选择,你想要使用的这个超酷箱子是异步或同步(显然总是你现在不需要的版本),你必须制作它的工作。
逃亡中的异步/等待rust'你决定你想要颜色的多少/小的代码!
有点儿?在传统的生锈时尚,我真的称之为痛苦,但更详细。它'是明确的典型缺陷之一,并为开发人员提供全面控制。我个人不介意,因为这种明确性是我最喜欢的东西之一。
截至本写作的时间,RERR中的标准库中没有异步函数,将迫使您为代码的任何部分颜色。然而,根据您想要使用的箱体生态系统,它的大部分可能倾向于异步(虽然通常是充分原因)。
如果您想抱怨Rust,还有很多其他的东西可以选择,即使是异步/等待的其他部分,但异步着色不是其中之一。