【发布时间】:2023-04-08 18:33:01
【问题描述】:
我正在尝试使用 bollard crate 迭代来自 docker 容器的日志。
这是我的代码:
use std::default::Default;
use bollard::container::LogsOptions;
use bollard::Docker;
fn main() {
let docker = Docker::connect_with_http_defaults().unwrap();
let options = Some(LogsOptions::<String>{
stdout: true,
..Default::default()
});
let data = docker.logs("2f6c52410d", options);
// ...
}
docker.logs() 返回impl Stream<Item = Result<LogOutput, Error>>。我想迭代结果,但我不知道该怎么做。我设法从future_utils 板条箱中找到了一个使用try_collect::<Vec<LogOutput>>() 的示例,但我想在while 循环中迭代结果,而不是在向量中收集结果。我知道我可以迭代一个向量,但是在循环中执行任务对我的用例来说会更好。
我尝试为流调用poll_next() 方法,但它需要一个我不明白的神秘Context 对象。 poll_next() 方法在我在流上使用 pin_mut!() 宏之前不可用。
如何迭代流?我应该阅读什么来了解这里发生了什么?我知道流与Futures 相关,但调用await 或next() 在这里不起作用。
【问题讨论】:
标签: rust