问题标签 [rust-futures]
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 - impl Stream 无法取消固定
我正在尝试使用crates_io_api
. 我试图从流中获取数据,但我无法让它工作。
AsyncClient::all_crates
返回一个impl Stream
. 我如何从中获取数据?如果您提供代码会很有帮助。
我检查了异步书,但它没有用。谢谢你。
这是我当前的代码。
rust - 如何在 Rust 中创建不同 Future 特征之间的互操作性?
我正在尝试使用该binance_async
库,tokio
并向futures
Binance 发出并发订单。(请参阅本问题末尾的注释。)我正在使用
的函数返回一个类型。我面临以下问题,在这两个示例中进行了说明:binance_async
binance_async::error::Result<impl futures::future::Future<_, _>>
- 假设我正在尝试这样做:
这太奇怪了。首先,我在任何地方都找不到futures::Future
- only futures::future::Future
,它fut.unwrap()
实现了。有什么帮助吗?
- 好吧,忘记 Tokio,让我们试试这个:
同样的错误,同样的问题。
笔记:
- 我可能是过度进口。如果导入所有这些库看起来有点矫枉过正,甚至是问题的根源,请告诉我!
- 我知道这
binance_async
是一个维护不足的图书馆。我很可能会完全放弃这种方法,binance
转而使用 crate。我只是对这个错误很好奇。 - 我的主管说这可能与属性宏有关,但我们俩都只有几个月的 Rust 经验并试图快速完成这项工作,我们无法深入挖掘。
非常感谢 :)
rust - Rust Futures 的最佳嵌套并行化方法
不确定这是否是一个好问题,但我希望除了我的主要问题之外,如果嵌套并行化是否不好,答案也可以涵盖。太感谢了!
假设我有任务 a、b、c 和 d。这些任务每个都有其单独的子任务,a1、a2 等等。
有时,a1 可能还有一堆子任务要完成。任务嵌套在 a、b、c 和 d 中,因为它们依赖于作为一个整体一起处理,因此没有办法将它们解耦并创建任务 e、f 和 g(等等..)。
我目前正在利用 Futures 和 Threadpool以并发、并行的方式处理这些任务(例如 a、b.. 并行运行,a1、a2 并行运行)。
然而,我受到了欢迎
上面失败的代码是
所以问题是:
- 在这种情况下嵌套并行化是否正确?(如果不是,我该怎么办?如果是,我该怎么办?)
- 如何确保安全地创建线程池,以便在资源不足时不会失败展开?
- 如果 (2) 是错误的做法,我应该如何实现我的代码?
rust - 类型相同时,Rust 中的“一种类型比另一种更通用”错误
我有以下代码
此外,您可以在Rust Playground上在线运行它。
出现以下错误:
现在,这真的很奇怪,因为它清楚地表明它正在得到它所期望的。我不明白哪种类型比哪种更通用。我对生命周期的了解不足以调试此代码。有人可以对此有更多的了解吗?
rust - 转换流- , _>> 到流
- >
假设我有一个 Result<Vec> 流:
我怎样才能成为s
具有返回类型的函数的返回值impl Stream<Item = Result<(), _>
?
rust - 为什么实施 ArcWake 避免编写样板文件?
在构建异步期货时,通常在唤醒器中实现ArcWake特征。我知道这样做是为了避免编写样板文件、创建 vtables 和编写不安全的代码(根据tokio 教程)。
现在,(这感觉像是一个愚蠢的问题)我不明白的是如何实现一个特征避免编写其他代码?当我检查trait 的来源时,它几乎不包含任何内容:只有一个需要实现以实现该 trait 的小函数的声明以及另一个调用该 trait 的函数的实例化。那么,我们避免写作的所有这些东西是从哪里来的呢?样板文件、vtables、不安全代码和所有这些在哪里?仅仅因为我们在唤醒器上实现了一个特征,它是如何被执行的?
rust - 取消固定 BoxStream 以使用 Tonic gRPC 流发送
我是 Rust 的新手,正在编写一个简单的应用程序,该应用程序将使用Tonic通过 gRPC 流式传输一些值。这些值最初是从外部库作为BoxStream ( Pin<Box<Stream>>
) 获取的,并且 tonic 的 API 需要实现的东西Stream
(当然 Pin 不需要)。
Tonic 的流式传输示例使用ReceiverStream将 mpsc 通道转换为流,并分离一个线程以将值推送到其中。这将需要一个流的生命周期,'static
这对于我的实际实现来说不是一个选项,因为我的流的生命周期与返回它的类相关联。
提供实现 Stream 的东西的最佳方式是什么,我可以从我Pin<Box<Stream>>
的
src/main.rs(这不会编译,因为 BoxStream<'static, Entry> 没有实现 IntoStreamingRequest)
货运.toml
提供编译错误:
asynchronous - 如何同时抓取未知端的分页网页?
我正在尝试使用 tokio 异步运行时在 Rust 中编写一个网络爬虫。我想异步获取/处理多个页面,但我也希望爬虫在到达末尾时停止(换句话说,如果没有什么可爬的)。到目前为止,我已经使用futures::future::try_join_all从我提供为Future
s 的异步函数中获取集体结果,但这显然需要程序事先知道要抓取的总页数。例如:
在这个简单的示例中,我必须知道要通过 ( 1..=3
) 的总页数,然后才能实际获取它们。我想要的是,不提供任何范围并且有条件停止整个过程。(例如,如果 HTML 结果包含“未找到”)
我查看了futures::executor::block_on但我不确定它是否可以用于这项任务。
mongodb - try_join 使 mongodb 事务同时发送
我是 Rust 新手,我正在使用默认的 MongoDB 驱动程序 https://docs.rs/mongodb/2.0.0/mongodb/
我记得在使用 Node.js 编码时,有可能使用一些 Promise.all() 发送事务,以便同时执行所有事务以进行优化,如果没有错误,则提交到交易。(此处为 Node.js 示例:https ://medium.com/@alkor_shikyaro/transactions-and-promises-in-node-js-ca5a3aeb6b74 )
我现在正在尝试使用 try_join 在 Rust 中实现相同的逻辑!但我一直反对这个问题:
错误:一次不能多次借用
session
mutable;标签:第一个可变借用发生在这里
有什么方法可以同步发送事务函数,以免在独立突变上浪费任何时间?有没有人有任何想法?提前致谢!
javascript - 悬而未决的承诺已取消
我试图让 Cloudflare 的工作人员跟踪一些 ERC20 代币的流通,作为学习 web3 和 wasm 的练习。认为它可能很简单,但到目前为止,大约 90% 的时间都在尝试解决这个难以捉摸的错误
我在网上寻找更多信息,但似乎我的错误来自不同的类型(?)。
这是一个简单的代码片段来重现。
这是 worker/workers.js 文件
货运.toml
wrangler dev
会很好地编译它,但是http://127.0.0.1:8787
会导致Error 1101