问题标签 [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.
rust - 请求消息值必须在静态生命周期内有效
我想实现一个阻塞函数,它发送一个带有 JSON 正文的 POST 请求并返回响应的 JSON 对象:
我得到的错误msg
寿命不够长:
在这一点上,我有两个问题:
msg
想要在静态生命周期内有效的组件是什么?从消息中我不清楚。- 如何在不使
msg
静态生命周期有效的情况下实现这样的功能?就我而言,这不是一个可行的解决方案。
依赖项:
rust - 特征绑定`futures::Future- , 错误=框
>: 发送`不满意
我有以下(简化的)代码片段,我正在尝试在 CpuPool 上运行未来:
但是,当我尝试编译时出现以下错误。
代码看起来是无辜的,两者Item
和Error
未来都是Send
. 我不知道为什么会收到此错误。
rust - 在 IntoFuture 中包装枚举变体?
我正在尝试编译类似以下代码的内容。似乎我需要帮助它理解我希望所有匹配臂都被视为futures::future::IntoFuture
,因为这是外部and_then
对回调/关闭/委托的期望。
目前,所有分支都使用最简单的枚举变体 stub NothingUseful()
,但我的目标最终是根据返回的 HTTP 状态代码和/或正文内容(如果适用)采取各种操作。
rust - 将消息从期货通道转发到 WebSocket 接收器时解决错误类型的类型不匹配
我正试图围绕 Rust 中的未来进行思考,但我对这段代码感到困惑,该代码应该将消息发送rx
到sink
:
如评论中所述,stream
用作输入工作正常。使用rx
时,编译器会抱怨关于错误类型的类型不匹配(我相信):
这些是我的依赖项:
我在这里想念什么?
rust - 即使我发送换行符,TCP 回显服务器也不会回复
我正在尝试按照 Tokio 客户端教程编写一个与回显服务器对话的客户端,该回显服务器在最后用换行符发回响应。这是我所拥有的:
我希望这会打印“A\n”,因为 A 的 ASCII 码是 65,换行符是 12。我的服务器是 netcat 使用这个命令
这似乎取决于在核心上运行响应未来。我在这里想念什么?
rust - 使用 Tokio 的 mpsc 和 oneshot 会导致死锁
我想编写一个 SOCKS 服务器,它根据客户端请求的目的地选择几个互联网网关之一。一般流程是
- 执行 SOCKS5 协商并从客户端获取地址信息
- 请求内部服务器选择 Internet 网关和目标 IP
- 连接并进行通信
对于这个内部服务器,会生成一个等待 mpsc 队列的 Tokio 任务。接收到的消息应包含 SOCKS5 地址信息和 oneshot 通道的 tx 端以返回结果。
另一个 Tokio 任务只是定期查询内部服务器:
使用 Cargo.toml 依赖项:
此代码死锁。输出是:
预期输出为:
这表明该tx
结束的请求已成功发送到内部服务器,但内部服务器没有处理它。据我了解,mpsc 和 oneshot 可用于在任务之间传输,而不仅仅是线程,因此包含线程不应像它那样死锁。
这里有什么问题?
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
rust - 是否可以在 Tokio 中关闭 TcpListener?
我tokio_core::net::TcpListener
创建了一个,然后调用该incoming
方法以获取传入连接流。然后我使用该for_each
流上的方法将其变成未来并在事件循环上运行未来。一旦我这样做了,以后有什么办法可以解除与端口的绑定?
如果没有,Tokio 中是否还有其他 API 可用于创建可关闭的 TCP 服务器?
rust - 为什么不放弃这个 SpawnHandle 会取消它的未来?
这是一个示例程序:
如您所见,我调用oneshot::spawn
然后立即删除它的返回值,理论上应该取消其中包含的未来。但是,当我运行这个程序然后连接到 时127.0.0.1:5000
,它仍然会打印“已收到连接”。为什么这样做?我希望它不会打印任何东西并TcpListener
从端口中删除 , 解除绑定。
rust - 在 Rust 未来的 trait 中,'static 生命周期意味着什么?
我以为我已经知道了'static
生命是什么,但现在我不确定了。
我正在尝试了解如何使用 Tokio 和 Futures。我的应用程序正在运行,但结构很糟糕,所以我需要分解它。这是'static
我的闭包的要求,我不知道如何解决。
例如,在一个main
函数中,我有一个句柄并且能够spawn
为其循环的未来:
它编译;现在我想移出一些逻辑:
它也编译。当我的结构变得更复杂时:
...我遇到
我认为它对我的关闭大喊大叫。如果我在我的 'edmain
函数中使用它,那么同样的未来也会起作用。Arc
Api
将其移动到具有引用(如单独的“处理器”)的结构中会'static
导致错误。