Единственный известный мне способ чтения до n байтов из файла — это это:
use std::fs::File;
use std::io;
use std::io::prelude::*;
fn main() -> io::Result<()> {
let mut f = File::open("foo.txt")?;
let mut buffer = [0; 10];
// read exactly 10 bytes
f.read_exact(&mut buffer)?;
Ok(())
}
Я хотел бы реализовать следующее: пользователь дает буфер и параметр n
, я помещаю в этот буфер до n
байтов.
fn read_n_bytes(f: &File, n: usize, dst: &mut Vec<u8>) {
let mut buffer = [0; n]; // error here, n isn't a constant
f.read_exact(&mut buffer);
// concat content of buffer to dst...
}
Как мне сказать read_exact, чтобы он читал до n байтов в dst
напрямую?
fn read_n_bytes(f: &File, n: usize, dst: &mut Vec<u8>) {
f.read_exact(dst, n);
}
let mut v = vec![0; 100]; f.read_exact(&mut v[..n])
? Передачаn
ИМХО очень не ржавая, потому что слайс знает, насколько он велик. Так зачем беспокоиться и передавать функции выделенныйn
? - person hellow   schedule 26.07.2019