Я хочу написать программу на Rust, которая берет все из стандартного ввода и копирует его в стандартный вывод. Пока у меня это
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;
}
}
Я копирую все в буфер размером один миллион, чтобы не взорвать память, если кто-то скармливает моей программе 3-гигабайтный файл. Итак, теперь я хочу скопировать это в stdout, но единственная примитивная операция записи, которую я могу найти, - это stdout.write(&mut buffer)
, но при этом записывается весь буфер! Мне нужен способ записать определенное c количество байтов, например stdout.write_only(&mut buffer, n_bytes_read)
.
Я хотел бы сделать это максимально c способом, с минимумом стандартной библиотеки импорт.