std::result

코너C·2022년 5월 26일
0

rust crates

목록 보기
1/1

메소드들

질의

  • is_ok(), is_err()

어댑터

  • as_ref()
    • &Result<T, E> to Result<&T, &E>
  • as_mut()
    • &mut Result<T, E> to Result<&mut T, &mut E>
  • as_deref()
    • &Result<T, E> to Result<&T::Target, &E>
  • as_deref_mut()
    • &mut Result<T, E> to Result<&mut T::Target, &E>

담고 있는 값 꺼내놓기

  • Ok인 경우 값을 내놓고, Err이면 다음 메소드에 따라 다름
    • expect(msg: &str) -> T : 제공되는 메시지와 함께 panic. Debug trait 구현 필요
    • unwrap() -> T : 일반 메시지와 함께 panic. Debug trait 구현 필요
    • unwrap_or(default: T) -> T : 제공되는 기본값을 반환
    • unwrap_or_default() -> T : T의 기본값을 반환(Default trait 구현되어 있어야 함)
    • unwrap_or_else(f: F) -> T : 제공되는 함수 실행 결과 반환
  • Ok인 경우 panic
    • expect_err(msg: &str) -> E : 제공되는 메시지와 함께 panic
    • unwrap_err() -> E : 일반 메시지와 함께 panic

변환 : Result -> Option

  • err() -> Option<E> : Err(e)는 Some(e)로, Ok(v)는 None으로 변환
  • ok() -> Option<T> : Ok(v)는 Some(v)로, Err(e)는 None으로 변환
  • transpose() -> Option<Result<T, E>> : Option의 Result의 Option를 Result의 Option으로 변환
    • Ok(Some(5))Some(Ok(5))로 변환

변환

  • map<U, F>(op: F) -> Result<U, E>
    • Result<T, E>의 Ok값에 대해서는 제공된 함수를 적용하고 Err값은 그대로 두는 변환
  • map_err<F, O>(op: O) -> Result<T, F>
    • Result<T, E>의 Err값에 대해서는 제공된 함수를 적용하고 Ok값은 그대로 두는 변환
  • map_or(default: U, f: F)
    • Ok(v)에 대해 f(v) 적용하고, Err이면 제공된 default값 리턴
  • map_or_else(defualt: D, f: F)
    • Ok(v)에 대해 f(v) 적용하고, Err이면 default함수 결과 리턴

불리언 연산

  • Ok는 true, Err은 false처럼 동작하는 and, or, xor 연산 가능

and_then(), or_else()

  • Result 값에 따라 제어 흐름을 조절할 때 사용
  • 함수를 입력으로 받아
  • and_then<U, F>(op: F) -> Result<U, E>
    • Ok(x)이면 함수 op(x) 적용, Err이면 Err(e) 반환
  • or_else<F, O>(op: O) -> Result<T, F>
    • Err(e)이면 함수 op(e) 적용, Ok면 Ok(x) 반환
    • None이면 f(v) 리턴

비교

  • Ok는 Err보다 항상 작음

Result<T>를 대상으로 하는 순환(iterating)

  • into_iter() : iterator 소비
  • iter() : Ok(v)의 v: &T에 대한 iterator 리턴
  • iter_mut() : Ok(v)의 v: &mut T에 대한 iterator 리턴
profile
Rustacean & Pythonian

0개의 댓글