Текст файла при сборке в Rust
Текстовый файл можно превратить в строку,
которая известна уже на этапе сборки.
Штатная запись для текста читает файл
как UTF-8 и дает тип со сроком на весь
запуск программы, без отдельного чтения
с диска в main.
Рядом с main.rs лежит note.txt;
вшиваем его и печатаем содержимое:
fn main() {
let note = include_str!("note.txt");
println!("{}", note);
}
На момент сборки файл содержит такой текст:
hello from file
После сборки строка note уже лежит
внутри программы. Переменная ссылается
на эти байты так же долго, как литерал
в двойных кавычках в коде.
Тот же прием годится для коротких шаблонов, подсказок и статических конфигов, которые не должны пропасть, если рядом с бинарником забыли положить папку с файлами:
fn main() {
let hint = include_str!("note.txt");
println!("{}", hint);
}
Дан файл:
rust
Вшейте текст в переменную note
и выведите note из main.
Дан файл:
line one
Сохраните содержимое в text,
выведите длину в символах Unicode
и сам текст.
Дан файл:
ok
Программа уже собрана с этим файлом,
затем note.txt на диске заменили
другим текстом без пересборки. Скажите,
что увидит запуск старого бинарника.