Rust std::result에 관해

고승우·2023년 6월 1일
0
post-thumbnail

Rust Enum std::result 공식 doc

std::result::Result

panic!과 다르게 복구가 가능한 에러에는 종종 Result를 사용한다. Result 는 성공시 Ok 혹은 실패 시 Err를 표현한다. Ok일 시 T타입을 반환하고, Err 일 시 E 타입을 반환한다.

pub enum Result<T, E> {
    Ok(T),
    Err(E),
}

implements

대표적인 impl


pub const fn is_ok(&self) -> bool

reulst 가 Ok라면 true를 반환한다.

let x: Result<i32, &str> = Ok(-3);
assert_eq!(x.is_ok(), true);

pub fn is_ok_and(self, f: impl FnOnce(T) -> bool) -> bool

result 가 Ok이고 인자로 들어온 구문이 성립하면 true를 반환한다.

let x: Result<u32, &str> = Ok(2);
assert_eq!(x.is_ok_and(|x| x > 1), true);

pub const fn is_err(&self) -> bool

reulst 가 Err라면 true를 반환한다.


pub fn is_err_and(self, f: impl FnOnce(E) -> bool) -> bool

result 가 Err이고 인자로 들어온 구문이 성립하면 true를 반환한다.


pub fn ok(self) -> Option< T >

Result<T, E>Option<T>로 변환한다. self를 소모하여 `Option로 변환하고, error가 존재한다면 무시한다.

let x: Result<u32, &str> = Ok(2);
assert_eq!(x.ok(), Some(2));

let x: Result<u32, &str> = Err("Nothing here");
assert_eq!(x.ok(), None);

pub fn err(self) -> Option< E >

Result<T, E>Option<E>로 변환한다. self를 소모하여 `Option로 변환하고, success가 존재한다면 무시한다.

let x: Result<u32, &str> = Ok(2);
assert_eq!(x.err(), None);

let x: Result<u32, &str> = Err("Nothing here");
assert_eq!(x.err(), Some("Nothing here"));
profile
٩( ᐛ )و 

0개의 댓글