question mark

?는 Ok를 풀고 Err를 현재 함수에서 조기 반환한다

Result를 받는 함수에서 ?를 붙이면 성공 값은 계속 쓰고, 실패는 From 변환을 거쳐 즉시 반환된다.

01 callread_to_string()

Result 반환

02 ?Ok(v)면 v 추출

다음 코드 진행

03 Err(e)에러 변환

현재 함수에서 return

04 caller실패 처리

전파된 Result 확인

구분의미판단
Ok내부 값 사용코드가 납작해짐
Err조기 반환중첩 match 감소
전제함수도 Result/Option 반환? 사용 가능

핵심 ? 연산자는 에러를 숨기는 것이 아니라 “여기서 처리하지 않고 호출자에게 넘긴다”는 표시다.