【发布时间】:2021-02-21 01:05:51
【问题描述】:
我一直在尝试使用Criterion 板条箱将基准测试添加到我的actix_web 应用程序中。我一直在努力让它工作,因为AsyncExecutor trait 没有为tokio 0.2.x 实现。我尝试为actix_rt 运行时实现特征,但在那里也遇到了问题,代码如下
impl AsyncExecutor for ActixRuntime {
fn block_on<T>(&self, future: impl Future<Output=T>) -> T {
self.rt.block_on(future)
}
}
pub struct ActixRuntime {
rt: actix_rt::Runtime,
}
impl ActixRuntime {
pub fn new() -> Self {
ActixRuntime {
rt: actix_rt::Runtime::new().unwrap(),
}
}
}
这个错误是因为actix_rt(和tokio0.2.x)的block_on函数有一个签名
block_on(&mut self, ...) -> ... { ... }
所以我无法实现 trait,因为 trait 有一个不可变的引用。
在我进一步深入尝试完成这项工作之前,我想问一下我正在尝试的事情是否可行。有没有办法将Criterion 与actix 一起使用?还是现在这不可能?如果不可能,是否有任何其他可用的框架,或者我应该查看 rust 工具链之外的解决方案吗?
感谢您的任何建议或帮助,欢迎提供链接和示例!
干杯!
【问题讨论】:
-
actix-rt 2.0 的
block_on采用&selfnow after upgrading to tokio 1.0。升级不是一种选择吗? -
如果没有,也许您可以将
rt包裹在RefCell中?
标签: rust async-await rust-tokio actix-web rust-criterion