问题标签 [rust-tokio]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
693 浏览

rust - 请求消息值必须在静态生命周期内有效

我想实现一个阻塞函数,它发送一个带有 JSON 正文的 POST 请求并返回响应的 JSON 对象:

我得到的错误msg寿命不够长:

在这一点上,我有两个问题:

  1. msg想要在静态生命周期内有效的组件是什么?从消息中我不清楚。
  2. 如何在不使msg静态生命周期有效的情况下实现这样的功能?就我而言,这不是一个可行的解决方案。

依赖项:

0 投票
1 回答
845 浏览

rust - 特征绑定`futures::Future, 错误=框>: 发送`不满意

我有以下(简化的)代码片段,我正在尝试在 CpuPool 上运行未来:

但是,当我尝试编译时出现以下错误。

代码看起来是无辜的,两者ItemError未来都是Send. 我不知道为什么会收到此错误。

0 投票
1 回答
571 浏览

rust - 在 IntoFuture 中包装枚举变体?

我正在尝试编译类似以下代码的内容。似乎我需要帮助它理解我希望所有匹配臂都被视为futures::future::IntoFuture,因为这是外部and_then对回调/关闭/委托的期望。

目前,所有分支都使用最简单的枚举变体 stub NothingUseful(),但我的目标最终是根据返回的 HTTP 状态代码和/或正文内容(如果适用)采取各种操作。

0 投票
1 回答
1929 浏览

rust - 将消息从期货通道转发到 WebSocket 接收器时解决错误类型的类型不匹配

我正试图围绕 Rust 中的未来进行思考,但我对这段代码感到困惑,该代码应该将消息发送rxsink

如评论中所述,stream用作输入工作正常。使用rx时,编译器会抱怨关于错误类型的类型不匹配(我相信):

这些是我的依赖项:

我在这里想念什么?

0 投票
1 回答
137 浏览

rust - 即使我发送换行符,TCP 回显服务器也不会回复

我正在尝试按照 Tokio 客户端教程编写一个与回显服务器对话的客户端,该回显服务器在最后用换行符发回响应。这是我所拥有的:

我希望这会打印“A\n”,因为 A 的 ASCII 码是 65,换行符是 12。我的服务器是 netcat 使用这个命令

这似乎取决于在核心上运行响应未来。我在这里想念什么?

0 投票
1 回答
1200 浏览

rust - 使用 Tokio 的 mpsc 和 oneshot 会导致死锁

我想编写一个 SOCKS 服务器,它根据客户端请求的目的地选择几个互联网网关之一。一般流程是

  1. 执行 SOCKS5 协商并从客户端获取地址信息
  2. 请求内部服务器选择 Internet 网关和目标 IP
  3. 连接并进行通信

对于这个内部服务器,会生成一个等待 mpsc 队列的 Tokio 任务。接收到的消息应包含 SOCKS5 地址信息和 oneshot 通道的 tx 端以返回结果。

另一个 Tokio 任务只是定期查询内部服务器:

使用 Cargo.toml 依赖项:

此代码死锁。输出是:

预期输出为:

这表明该tx结束的请求已成功发送到内部服务器,但内部服务器没有处理它。据我了解,mpsc 和 oneshot 可用于在任务之间传输,而不仅仅是线程,因此包含线程不应像它那样死锁。

这里有什么问题?

0 投票
1 回答
89 浏览

rust - tokio_core::net::UdpCodec 与关联类型的生命周期

我正在尝试实现一个从 dns_parser 板条箱tokio_core::net::UdpCodec创建一个。dns_parser::Packet目前的实现如下所示:

dns_parser::Packet的定义是:

}

这无法编译:

问题是我不知道要添加什么作为一生!我假设 Packet 需要与 buf 参数具有相同的生命周期。但我自己不知道如何正确表达这一点。

我已经将一个非工作示例上传到 github: https ://github.com/Fulkerson/mdnsfuturestest

0 投票
2 回答
2369 浏览

rust - 是否可以在 Tokio 中关闭 TcpListener?

tokio_core::net::TcpListener创建了一个,然后调用该incoming方法以获取传入连接流。然后我使用该for_each流上的方法将其变成未来并在事件循环上运行未来。一旦我这样做了,以后有什么办法可以解除与端口的绑定?

如果没有,Tokio 中是否还有其他 API 可用于创建可关闭的 TCP 服务器?

0 投票
1 回答
555 浏览

rust - 为什么不放弃这个 SpawnHandle 会取消它的未来?

这是一个示例程序:

如您所见,我调用oneshot::spawn然后立即删除它的返回值,理论上应该取消其中包含的未来。但是,当我运行这个程序然后连接到 时127.0.0.1:5000,它仍然会打印“已收到连接”。为什么这样做?我希望它不会打印任何东西并TcpListener从端口中删除 , 解除绑定。

0 投票
0 回答
3538 浏览

rust - 在 Rust 未来的 trait 中,'static 生命周期意味着什么?

我以为我已经知道了'static生命是什么,但现在我不确定了。

我正在尝试了解如何使用 Tokio 和 Futures。我的应用程序正在运行,但结构很糟糕,所以我需要分解它。这是'static我的闭包的要求,我不知道如何解决。

例如,在一个main函数中,我有一个句柄并且能够spawn为其循环的未来:

它编译;现在我想移出一些逻辑:

它也编译。当我的结构变得更复杂时:

...我遇到

我认为它对我的关闭大喊大叫。如果我在我的 'edmain函数中使用它,那么同样的未来也会起作用。ArcApi

将其移动到具有引用(如单独的“处理器”)的结构中会'static导致错误。