【发布时间】:2020-08-06 21:25:01
【问题描述】:
我想编写一个 Rust 程序,它将 stdin 中的所有内容复制到 stdout。到目前为止我有这个
fn main() {
let mut stdin: io::Stdin = io::stdin();
let mut stdout: io::Stdout = io::stdout();
let mut buffer: [u8; 1_000_000] = [0; 1_000_000];
let mut n_bytes_read: usize = 0;
let mut uninitialized: bool = true;
while uninitialized || n_bytes_read > 0
{
n_bytes_read = stdin.read(&mut buffer).expect("Could not read from STDIN.");
uninitialized = false;
}
}
我将所有内容复制到大小为 100 万的缓冲区中,以免在有人向我的程序提供 3 GB 文件时炸毁内存。所以现在我想将它复制到标准输出,但我能找到的唯一原始写操作是stdout.write(&mut buffer) - 但这会写入整个缓冲区!我需要一种方法来写入特定数量的字节,例如stdout.write_only(&mut buffer, n_bytes_read)。
我想以尽可能最基本的方式做到这一点,只需要最少的标准库导入。
【问题讨论】:
标签: rust