Текст своей ошибки в Rust
Человеку удобнее читать сбой как строку, а не как набор полей структуры. Для этого у типа выполняют трейт печати: в одном месте решают, какие поля попадут в сообщение и в каком порядке.
Поле можно вывести через макрос записи в форматтер, как в обычном выводе на экран. Тогда при печати исхода сбоя или самой ошибки текст будет один и тот же, без дублирования строк по файлу.
Оформим тип с полем пути и коротким текстом:
#[derive(Debug)]
struct PathError {
path: String,
}
impl std::fmt::Display for PathError {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
write!(f, "bad path {}", self.path)
}
}
fn main() {
let err = PathError {
path: String::from("data.txt"),
};
println!("{}", err);
}
Дан следующий код:
struct CodeError {
code: i32,
}
Добавьте трейт печати, который выводит слово
"code", пробел и число из поля. Соберите
значение, напечатайте его через println!
с {}.
Дан следующий код:
struct NameError {
name: String,
}
Напишите текст "unknown name", затем
пробел и значение поля name. Выведите
ошибку одной строкой в main.
Дан следующий код:
struct LimitError {
max: u32,
}
Сделайте сообщение "limit", двоеточие
и число max. Проверьте вывод в полной
программе с fn main.