Прочитать до n байт из файла

Единственный известный мне способ чтения до 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);
}

person JACK M    schedule 26.07.2019    source источник
comment
См. мои изменения в другом вопросе и постарайтесь избежать повторения того же самого. В этом случае: не указывайте язык программирования в названии. Вот для чего нужны теги.   -  person hellow    schedule 26.07.2019
comment
А как насчет let mut v = vec![0; 100]; f.read_exact(&mut v[..n])? Передача n ИМХО очень не ржавая, потому что слайс знает, насколько он велик. Так зачем беспокоиться и передавать функции выделенный n?   -  person hellow    schedule 26.07.2019