Срез до массива фиксированного размера [дубликат]

На этот вопрос уже есть ответ здесь:

Как получить срез в виде массива в Rust? 6 ответов

У меня есть структура с некоторыми массивами фиксированного размера:

struct PublicHeaderBlock_LAS14 {
    file_signature: [u8; 4],
    file_source_id: u16,
    global_encoding: u16,
    project_id_data_1: u32,
    project_id_data_2: u16,
    project_id_data_3: u16,
    project_id_data_4: [u8; 8],
    version_major: u8,
    version_minor: u8,
    systemIdentifier: [u8; 32], // ...
}

Я читаю байты из файла в массив фиксированного размера и копирую эти байты в структуру побитно.

fn create_header_struct_las14(&self, buff: &[u8; 373]) -> PublicHeaderBlock_LAS14 {
    PublicHeaderBlock_LAS14 {
        file_signature: [buff[0], buff[1], buff[2], buff[3]],
        file_source_id: (buff[4] | buff[5] << 7) as u16,
        global_encoding: (buff[6] | buff[7] << 7) as u16,
        project_id_data_1: (buff[8] | buff[9] << 7 | buff[10] << 7 | buff[11] << 7) as u32,
        project_id_data_2: (buff[12] | buff[13] << 7) as u16,
        project_id_data_3: (buff[14] | buff[15] << 7) as u16,
        project_id_data_4: [buff[16], buff[17], buff[18], buff[19], buff[20], buff[21], buff[22], buff[23]],
        version_major: buff[24],
        version_minor: buff[25],
        systemIdentifier: buff[26..58]
    }
}

Последняя строка (systemIdentifier) не работает, потому что в структуре это[u8; 32] а такжеbuff[26..58] это кусочек. Могу ли я вернуть преобразование фрагмента в массив фиксированного размера, например, в диапазоне, вместо того, чтобы делать то, что я сказал?file_signature?

Ответы на вопрос(2)

Ваш ответ на вопрос