如何在非异步函数上等待 Rust Future

How to await a Rust Future on a non-async function

这里是 Rust 新手(学习不到 7 天),在所有权规则之后我要克服的第二个障碍是 async/await。

我正在编写一个调用 async 函数的测试,我需要在不使用关键字 await.

的情况下从 Future 获取结果

我查看了 async_test,但是我不能使用它,因为(据我所知)这需要 tokio 运行时和我的 main 中的 #[tokio_main] 属性方法 - 但我的 main 已经用 #[actix_rt::main]

装饰了

这是我的测试

#[test]
pub fn test_get_item() -> Result<(), anyhow::Error> {
    let c = SomeClient::new();
    let result = c.get_item(123456).await?; // <- this is not allowed

    assert_eq!("Hello", result.title);
    assert_eq!("https://example.com", result.url.as_str());

    Ok(())
}

我尝试过但失败的事情(主要是因为我对 Rust 缺乏了解)

我不明白为什么一定要这么复杂,也许 Future 的某个地方有一个简单的函数(比如 wait()get_result())?

感谢您的帮助。

不得不稍微理清头绪并重新开始,只是发现 actix-web 有一个我可以使用的允许 async 测试的宏。

#[actix_rt::test]

此时此刻,宏对我来说都是神奇的,我希望我能尽快理解它们。