リーダーからRustの書き込みにデータをストリームするにはどうすればよいですか?Rustのリーダーから直接書き込みする
最終的な目標は、実際にはgzip形式のデータをストリーミング形式で書き出すことです。私が見逃しているのは、読者からのデータを反復してファイルに書き出す関数だと思われます。
このタスクは、read_to_stringなどで簡単に行うことができますが、私の要件はメモリ使用量を抑えるためにデータをストリーミングすることです。私はこれを行うための簡単な方法を見つけることができませんでしたが、多くのバッファ割り当てをしません。
use std::io;
use std::io::prelude::*;
use std::io::{BufReader};
use std::fs::File;
use flate2::read::{GzEncoder};
use flate2::{Compression};
pub fn gzipped<R: Read>(file: String, stream: R) -> io::Result<()> {
let file = File::create(file)?;
let gz = BufReader::new(GzEncoder::new(stream, Compression::Default));
read_write(gz, file)
}
pub fn read_write<R: BufRead, W: Write>(mut r: R, mut w: W) -> io::Result<()> {
// ?
}
非常によく似た質問が見つかりました:[ストリームから特定のバイト数を読み取る方法](http://stackoverflow.com/questions/30412521/how-to-read-specific-number-of-bytes-from- a-stream)。 –