Введение
В этом практическом занятии мы узнаем, как создавать псевдонимы для определенного типа Result в Rust, чтобы можно было использовать его несколько раз и удобно определять все связанные Result внутри модуля.
Примечание: Если практическое занятие не задает имя файла, вы можете использовать любое имя файла, которое хотите. Например, вы можете использовать
main.rs, скомпилировать и запустить его с помощьюrustc main.rs &&./main.
псевдонимы для Result
Что делать, если мы хотим многократно использовать определенный тип Result? Помните, что Rust позволяет создавать псевдонимы. К счастью, мы можем определить один для конкретного Result.
На уровне модуля создание псевдонимов может быть особенно полезным. Ошибки, обнаруженные в определенном модуле, часто имеют один и тот же тип Err, поэтому один псевдоним может кратко определить все связанные Result. Это настолько полезно, что стандартная библиотека std даже предоставляет один: io::Result!
Вот простой пример, демонстрирующий синтаксис:
use std::num::ParseIntError;
// Определите общий псевдоним для `Result` с типом ошибки `ParseIntError`.
type AliasedResult<T> = Result<T, ParseIntError>;
// Используйте вышеуказанный псевдоним, чтобы сослаться на наш конкретный тип `Result`.
fn multiply(first_number_str: &str, second_number_str: &str) -> AliasedResult<i32> {
first_number_str.parse::<i32>().and_then(|first_number| {
second_number_str.parse::<i32>().map(|second_number| first_number * second_number)
})
}
// Здесь псевдоним снова позволяет нам节省ить некоторое пространство.
fn print(result: AliasedResult<i32>) {
match result {
Ok(n) => println!("n is {}", n),
Err(e) => println!("Error: {}", e),
}
}
fn main() {
print(multiply("10", "2"));
print(multiply("t", "2"));
}
Резюме
Поздравляем! Вы завершили практическое занятие по псевдоними для Result. Вы можете выполнить больше практических занятий в LabEx, чтобы улучшить свои навыки.