Rust: с нуля до своего органайзера Урок 55 из 60
Настройки и документация
Урок 55. Объяснить выбор файла данных и написать инструкцию, по которой другой человек запустит проект.
Текст переведён с помощью ИИ.
Повторите пути, аргументы и команды.
Образ и опорная карта
Адрес для письма можно назвать в самом письме, хранить в записной книжке или взять адрес по умолчанию. Явно названный адрес должен побеждать. Карта: путь из команды → если его нет, путь из окружения → если и его нет, местный путь по умолчанию. Окружение — настройки, которые родительский процесс передаёт программе при запуске. Образ не делает относительный путь абсолютным: tasks.json зависит от текущей папки.
Option<PathBuf> означает, что путь может присутствовать или отсутствовать. if let Some(path) берёт путь только при наличии. Первый найденный путь возвращается; дальнейшие ветви не выполняются. PathBuf::from создаёт значение пути, display() показывает его человеку. /// — комментарий документации перед функцией: Cargo включает его в страницы, которые строит cargo doc. Этот первый пример подставляет значения прямо в вызовы для воспроизводимого вывода; в настоящем запуске аргумент получают из args, а окружение — из std::env::var_os. При отсутствии переменной var_os возвращает None.
Запустите и разберите
Создайте новый Cargo проект без зависимостей. Скопируйте первый Rust блок в src/main.rs; cargo run покажет выбор без настройки и с настройкой окружения. Затем выполните cargo doc --no-deps: команда создаст HTML-документацию проекта в target/doc, не включая страницы зависимостей. На Windows можно открыть её в браузере из проводника; на macOS/Linux — из файлового менеджера. README — обычный файл README.md в корне проекта, где новичок должен найти требования, команды запуска, путь файла и действия при ошибке.
use std::path::PathBuf;
/// Выбрать путь: команда, окружение, местный вариант по умолчанию.
pub fn choose_path(command: Option<PathBuf>, environment: Option<PathBuf>) -> PathBuf {
if let Some(path) = command {
return path;
}
if let Some(path) = environment {
return path;
}
PathBuf::from("дела.json")
}
fn main() {
println!("По умолчанию: {}", choose_path(None, None).display());
println!(
"Из окружения: {}",
choose_path(None, Some(PathBuf::from("семья.json"))).display()
);
}
По умолчанию: дела.json
Из окружения: семья.json
Вопросы для воспроизведения
- Какой путь победит, если заданы все три варианта?
- От чего зависит относительный путь
tasks.json? - Для кого нужны README и комментарий
///?
Задание
Обязательное. Добавьте третий вызов choose_path, где заданы и путь из команды, и путь из окружения; выведите выбранный путь. Затем создайте README.md с тремя разделами: установка Rust, запуск через cargo run, правило приоритета путей и предупреждение о текущей папке. Передайте инструкцию человеку, который не видел урок, или пройдите её сами из новой пустой папки.
Ответы
Показать ответы
Вызовите choose_path(Some(PathBuf::from("работа.json")), Some(PathBuf::from("семья.json"))). Для README используйте команды из уроков 5–6, а не предположение, что Cargo уже установлен.
use std::path::PathBuf;
/// Выбрать путь: команда, окружение, местный вариант по умолчанию.
pub fn choose_path(command: Option<PathBuf>, environment: Option<PathBuf>) -> PathBuf {
if let Some(path) = command {
return path;
}
if let Some(path) = environment {
return path;
}
PathBuf::from("дела.json")
}
fn main() {
println!("По умолчанию: {}", choose_path(None, None).display());
println!(
"Из окружения: {}",
choose_path(None, Some(PathBuf::from("семья.json"))).display()
);
println!(
"Из команды: {}",
choose_path(
Some(PathBuf::from("работа.json")),
Some(PathBuf::from("семья.json"))
)
.display()
);
}
По умолчанию: дела.json
Из окружения: семья.json
Из команды: работа.json
Пример содержания README.md для этого учебного проекта:
# Органайзер: выбор файла
1. Откройте https://www.rust-lang.org/tools/install, установите Rust для своей ОС, откройте новый терминал и проверьте `cargo --version`.
2. В папке проекта выполните `cargo run`.
3. Путь из команды имеет приоритет над окружением; затем берётся `дела.json` в текущей папке. В этом учебном примере значения переданы прямо в коде; файл ещё не создаётся.
4. Если Cargo сообщает ошибку, прочитайте её текст и проверьте, что команда запущена в папке с `Cargo.toml`.
Запустите cargo doc --no-deps и найдите описание choose_path в созданной документации.
После проверки
Изменённое значение окружения не обязано быть надёжным местом для секрета; здесь там только путь. Для настоящего органайзера документируйте, где лежат данные, как создаётся копия, что делать при повреждении и какие случаи ещё не покрыты. Документация cargo doc.
Если вы нашли ошибку или опечатку в тексте статьи, то сообщите нам об этом
Комментарии (0)
Войдите, чтобы оставить комментарий →
Пока нет комментариев. Будьте первым.