我希望向 URL 发出 get 请求,并从此处获取 bytes_stream 形式的响应,我想使用此数据发出 2 个 put 请求。
有没有办法发出一次 get 请求并以某种方式复制返回的 bytes_stream。
let response = client.get(get_url).send().await.unwrap();
let stream = response.bytes_stream();
let body = Body::wrap_stream(stream);
// Duplicate the body somehow?
// I will run these concurrently at some stage.
client.put(upload_url_1)
.body(body)
.send().await.unwrap()
.text().await.unwrap();
client.put(upload_url_2)
.body(duplicated_body)
.send().await.unwrap()
.text().await.unwrap();
Stream
的结构,它采用内部 Stream,然后你需要将数据存储在流中以便能够多次提供数据,最后你需要找到一种方法为每个流提供一个光标...否则,它不再是一个流,而是一个糟糕的实现向量。
如果您需要读取数据两次,则需要存储它,在您的情况下,
Vec<u8>
将工作得很好。如果您需要分享它Arc<[u8]>
或只是克隆矢量。