Result의 별칭
특정한 Result 타입을 여러 번 재사용하고 싶을 때는 어떨까요? Rust는 별칭(aliases)을 만들 수 있게 해준다는 점을 기억하세요. 편리하게도 문제의 특정 Result에 대해 별칭을 정의할 수 있습니다.
모듈 수준에서 별칭을 만드는 것은 특히 유용할 수 있습니다. 특정 모듈에서 발견되는 에러들은 종종 동일한 Err 타입을 가지므로, 단일 별칭으로 모든 연관된 Result들을 간결하게 정의할 수 있습니다. 이는 매우 유용하여 표준 라이브러리에서도 하나를 제공합니다: io::Result!
다음은 문법을 보여주는 간단한 예제입니다:
use std::num::ParseIntError;
// 에러 타입이 `ParseIntError`인 `Result`에 대한 제네릭 별칭을 정의합니다.
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은 {}입니다", n),
Err(e) => println!("에러: {}", e),
}
}
fn main() {
print(multiply("10", "2"));
print(multiply("t", "2"));
}