小编Sna*_*gon的帖子

如何将 JS Promise 翻译为 Rust

目前我正在编写一个纯 Rust MQTT5 库(我知道那里有现有的库,但我更想学习 Rust),我偶然发现了这个问题。

我正在使用最新的稳定版 rust 和 tokio 1.0.1。

当我通过线路发送数据包时,我经常期望服务器做出响应(下面的示例是 PingReq/PingAck、Ping/Pong)。

省略了很多有关超时和数据包冲突的逻辑,我用 JavaScript 编写了逻辑的简化版本(因为我对此非常了解)。

这种逻辑将如何转化为 Rust 及其未来?或者更清楚地说:我可以以某种方式重新创建awaitPackage + onIncomingPacket 的resolve() 回调函数行为吗?

class Client {
  awaitedPacketTypes = {};

  /**
   * a ping consist of a send ping and a receive pong
   */
  async ping(){
    await this.sendPacket("Ping");
    return await this.awaitPackage("Pong");
  }

  async sendPacket(packetType) { /*...*/ }
  
  /**
   * This expects a specific packet type to be received in the future
   * @param {*} packetType 
   */
  awaitPackage(packetType) {
    return new Promise((resolve, reject) …
Run Code Online (Sandbox Code Playgroud)

rust rust-tokio

4
推荐指数
1
解决办法
941
查看次数

标签 统计

rust ×1

rust-tokio ×1