Как преобразовать буфер кусочка байтов (& [u8]) в целое число?

Я читаю необработанные данные из файла, и я хочу преобразовать его в целое число:

fn main() {
    let buf: &[u8] = &[0, 0, 0, 1];
    let num = slice_to_i8(buf);
    println!("1 == {}", num);
}

pub fn slice_to_i8(buf: &[u8]) -> i32 {
    unimplemented!("what should I do here?")
}

Я бы сделал тип на C, но что мне делать в Rust?

Ответ 1

Я бы предложил использовать ящик байтов:

extern crate byteorder;

use byteorder::{BigEndian, ReadBytesExt};

fn main() {
    let bytes = [0, 0, 0, 1];
    let mut buf = &bytes[..];
    let num = buf.read_u32::<BigEndian>().unwrap();

    println!("1 == {}", num);
}