是否可以从一组 JoinHandle JoinHandle<()>任务中读取 stream 的Future并同时用新任务更新该组任务? 我目前有一个运行一些长任务的Service 。 唯一的问题是,我实际上想(如果可能的话)同时添加新任务——通过某种类型的Receiver通道发送的标志 ...
是否可以从一组 JoinHandle JoinHandle<()>任务中读取 stream 的Future并同时用新任务更新该组任务? 我目前有一个运行一些长任务的Service 。 唯一的问题是,我实际上想(如果可能的话)同时添加新任务——通过某种类型的Receiver通道发送的标志 ...
我的目标是将以下 read_stream_***() 函数简化为可以传递不同流的通用函数。 一般尝试: Cargo.toml 我尝试了 <T: async_std::io::Read> 但未实现 fuse() 和 lines() 。 并且在 async_std::io 中找不到 Asy ...
我有多个分阶段的异步操作。 例如,假设异步操作的第一阶段是发出多个请求,第二阶段是将多个 http 请求的结果解析为 JSON。 使用join_all时,我可以分两步执行这些操作。 基本上 这行得通。 但我想知道是否有一种方法可以组合两个异步操作并只使用一个join_all ...
我的代码可以归结为以下内容: 问题是响应只包含一个结果。 我希望它是调用端点的结果。 ...
一个结构的方法如何运行另一个结构相同的方法作为任务? 请原谅我可能的愚蠢,我是 Rust 的新手。 编译器抱怨self在调用它的 function 的主体中无法生存。 但这不是访问一个结构的上下文,根据定义,它是活着的,因为它的方法可以被调用? use std::time::{Duration}; ...
function connect() 的文档说它会返回一个 Future。 此方法将创建一个新的 TCP 套接字并尝试将其连接到提供的地址。 返回的future将在stream连接成功后解决,否则返回错误。 从它的签名, pub async fn connect<A: ToSocketAd ...
我有一些异步功能 async fn get_player(name: String, i: Instant) -> Option<Player> { // some code here that returns a player structs } 在我的主函数中,我想在循环中 ...
我正在连接到数据库。 插入凭据后,连接器会返回一个(client, connection)元组。 之后,程序宏必须访问某个“全局位置”,从那里检索凭据并将数据连接到生成的代码中。 我试过这样的事情: 我不能在.await contexts 中等待。 是否有一种解决方法可以在RuntimeData上保 ...
我正在尝试实现一个异步读取包装器,它将添加读取超时功能。 目标是 API 是普通的AsyncRead 。 换句话说,我不想在代码中到处添加 io.read(buf).timeout(t) 。 相反,读取实例本身应在给定超时到期后返回适当的io::ErrorKind::TimedOut 。 不过,我无 ...
我已经实现了一个聊天服务器,它存储连接的用户,如果用户发送消息,服务器会将其回显给所有其他客户端。 我有 C++ 背景,所以我创建了一个全局static mut USERS:Vec<TcpStream>变量来存储和访问用户。 我正在处理来自 main() 的连接用户,如下所示:#[as ...
如何在向量中存储具有相同签名的 2 个不同异步函数的期货? 我在不同的箱子中有 2 个功能: 板条箱 1: 板条箱 2: 我试图聚合函数调用的结果,如下所示: 但我得到了这个: 为什么 rust 不能推断类型? ...
我有一个像这样的简单代码来模拟异步代码如何处理阻塞操作。 我期待所有这些“你好”打印将在 1000 毫秒后显示。 但是这段代码就像一个普通的阻塞代码,每个 hello_wait 调用等待 1000 毫秒,并在 1000 毫秒后打印另一个 Hello。 我怎样才能让它同时运行? use std: ...
我认为我的问题与Rust 问题 57017 相关。 以下代码不会编译并产生error: future cannot be sent between threads safely由于future created by async block is not 'Send'源自async fn execu ...
我有以下代码 此外,您可以在Rust Playground上在线运行它。 出现以下错误: 现在,这真的很奇怪,因为它清楚地表明它正在得到它所期望的。 我不明白哪种类型比哪种类型更通用。 我对生命周期的了解不足以调试此代码。 有人可以对此有更多的了解吗? ...
我想使用 tokio 或 async-std 在多线程中执行以下处理。 我已经阅读了关于 tokio 和 async-std 的教程,但我认为没有提到并行化 for。 在这个过程中,所有线程都引用同一个数组索引。 此外,所有线程都将访问同一数组的不同位置。 我想将上述代码的部分更改为并行处理。 ...
我只是在做一些快速实验,试图学习 rust 语言,我已经做了一些成功的异步测试,这是我的起点:use async_std::task; use futures; use std::time::SystemTime; fn main() { let now = SystemTime::no ...
为了理解流是如何工作的,我试图实现一个使用 random.org 的无限数生成器。 我做的第一件事是实现一个版本,在该版本中我将调用一个名为 get_number 的异步 function ,它将填充缓冲区并返回下一个可能的数字: struct RandomGenerator { buffe ...
我实现了 tonic helloworld教程。 然后我尝试更改客户端代码,以便在等待任何请求之前发送多个请求。 这会导致编译错误: 这是否意味着'client.say_hello()'返回一个仍然引用客户端的类型,因此我不能再次调用'say_hello',它本身需要'&mut self' ...
我购买了一个 http 代理(支持 http 隧道),但没有 rust 示例代码,我尝试使用 crate 冲浪,但没有找到代理方式,我自己实现。 以下是我的代码: 得到错误: 我不知道出了什么问题。 ...
我正在使用 async_std 构建应用程序,但这会返回未解决的导入错误:use async_std::sync::Sender; 查看 1.8.0 的文档后,似乎async_std::sync已被 弃用,取而代之的是async_std::channel 。 在1.7.0中情况并非如此。 更新到 ...