Байты файла при сборке в Rust
Не всякий файл нужно трактовать как текст.
Штатная запись для байт читает файл целиком
и дает срез &'static [u8]: данные
лежат в бинарнике и живут весь запуск,
без копии в Vec и без чтения
с диска в рантайме.
Рядом с main.rs лежит note.bin;
вшиваем его и выводим длину:
fn main() {
let raw = include_bytes!("note.bin");
println!("{}", raw.len());
}
Срез можно обойти по индексу или передать туда, где ждут именно байты, например при разборе простого формата или проверке сигнатуры в начале файла:
fn main() {
let raw = include_bytes!("note.bin");
if raw.len() >= 2 {
println!("{}", raw[0]);
println!("{}", raw[1]);
}
}
Дан файл:
AB
Положите байты в raw и выведите
raw.len().
Дан файл:
x
Вшейте содержимое в data, выведите
первый байт как число и длину среза.
Скажите, чем тип результата записи для
байт отличается от строки, которую дает
запись для текста, если оба файла лежат
рядом с main.rs.