问题标签 [rust-async-std]

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 投票
3 回答
1265 浏览

rust - 为什么 TCP 回显服务器的异步版本使用的内存是同步版本的 50 倍?

我有一个使用标准库的简单 TCP 回显服务器:

它使用大约 11 MB 的内存:

标准库

东京

如果我将其转换为使用 tokio:

它使用 607 MB 内存:

东京

async_std

同样,使用 async_std:

它还使用 607 MB 内存:

async_std


为什么程序的异步版本使用的内存是同步版本的 55 倍?

0 投票
5 回答
3877 浏览

asynchronous - 如何等待 rust 中的异步函数调用列表?

我有一个asyncrust 函数列表,我想同时执行这些函数,然后等待它们完成。我现在的工作代码是

这不是很准确,因为函数是串行执行的。我正在寻找类似的东西join!,但它适用于动态向量,使用它我应该能够编写类似的东西

现在join!只支持元组。我正在寻找替代方案。类似于JavaScript 中的Promise.all()的东西。

0 投票
0 回答
44 浏览

rust - 无法将 RefCell 中的 TlsStream 借用为可变的

我有一个包含RefCell包装 a的结构TlsStream<TcpStream>。我测试了TlsStream<IO>用 an替换i32并且能够改变结构成员,但是在使用流时编译器出错。尝试写入时出现以下错误:

MCVE:

我如何在这里利用内部可变性?

0 投票
0 回答
249 浏览

rust - 如何创建期货的 Vec

我有这个功能:

我想存储一个Vec期货并等待它们:

我得到一个E0308: expected mutable reference, found opaque type.

应该是什么类型events

我可以通过推断类型来解决这个问题:

但我真的很想知道如何将期货存储在向量中。

0 投票
1 回答
205 浏览

rust - read in chunks with async-std

I'm trying to implement something similar to reading a file in Java with AsynchronousByteChannel like

i.e. read as much as OS gives, process, ask for more and so on. What would be the most straightforward way to achieve this with async_std?

0 投票
0 回答
270 浏览

rust - 如何编写一个返回 async_std 流的 Rust 生成器?

假设我有一个特征IMyWriter,它有一个函数flush_to_disk可以获取要编写的片段的迭代器。编写的每一部分都应该产生一个 Result 对象。

我在实现中进行映射时遇到问题:

这显然抱怨:

我一生都无法弄清楚如何为发生的异步写入流返回结果。

0 投票
1 回答
190 浏览

rust - 如果我有嵌套的 async/await 调用,我应该关心累积的开销吗?

我正在通过多个通道处理数据,每个通道都输入下一个通道(管道处理)。我最终得到一个spawn看起来像这样的顶部:

Forwarder看起来像这样:

两者都handle_action调用handle_notification一个发件人,这是另一个async fn。我的担忧有两方面。到 send (或任何其他)的整个路径async fn似乎需要一个 async/await 包装器。就我而言,我在发送时深 3 级。这似乎有点难看,特别是如果我必须进行任何重构。其次,每个级别的 async/await 是否存在运行时成本,或者编译器是否足够聪明以崩溃这些?如果它有助于使这更具体,可以将其视为音频处理,其中第一阶段解码,下一个阶段进行调平,下一个阶段进行混合,然后最后阶段进行编码。

为了扩展重构关注点,让我们看一下重构 for 循环。

for我们不想使用循环,而是使用iterator. 然而,这将需要一个异步闭包——这是我什至不知道如何表达的东西。

0 投票
1 回答
215 浏览

rust - async_std 1.8 对 `async_std::channel` 中的项目有未解决的导入

我正在使用 async_std 构建应用程序,但这会返回未解决的导入错误:

查看 1.8.0 的文档后,似乎async_std::sync弃用. async_std::channel1.7.0中情况并非如此。

更新到 1.8.0 后,我尝试use async_std::sync::Sender;use async_std::channel::Sender.

文档似乎同意它应该可以工作,但我仍然收到未解决的导入错误。

我错过了什么?

0 投票
1 回答
323 浏览

rust - Rust:如何使用 async-std + TLS + HTTP 代理(http 隧道)?

我购买了一个http代理(支持http隧道),但没有rust示例代码,我尝试使用crate surf,但没有找到代理方式,我必须自己实现。以下是我的代码:

得到错误:

我不知道出了什么问题。

0 投票
1 回答
499 浏览

rust - 为什么我不能使用 rust tonic 并行发送多个请求?

我实现了 tonic helloworld教程。然后我尝试更改客户端代码,以便在等待任何请求之前发送多个请求。

这会导致编译错误:

这是否意味着'client.say_hello()'返回一个仍然引用客户端的类型,因此我不能再次调用'say_hello',它本身需要'&mut self'?有没有办法在调用“等待”之前继续提出请求?