在非异步中为 rustr 调用异步函数

Call async function in non-async for rustr

您好,我有一个系统可以从不同来源提取一些数据。直到今天所有的资源都是同步的所以我设计了以下 API:


trait GraphPuller {
  pub fn Graph() -> Result<Vec<i64>>
}

struct GitPuller;
Struct TcpPuller;

impl GraphPuller for GitPuller {
  pub fn Graph() -> Result<Vec<i64>> {
  ...
  }
}

impl GraphPuller for Tc[Puller {
  pub fn Graph() -> Result<Vec<i64>> {
  ...
  }
}

现在我必须为 AWS 实施 Puller。 AWS API 是异步的,所以我必须在非同步系统中调用异步函数。

我应该如何设计特征和 api 以避免出现问题?

最简单的方法是保持特征不变,只阻止 Amazon API 调用。我推荐 pollster::block_on,因为它只实现了最基本的功能,而不是引入更重量级的 futures 板条箱。