DataScience
Published 2023. 8. 7. 15:07
[RUST] unwrap과 '?' Rust
728x90

두 연산자는 에러 처리와 결과 값의 추출을 간편하게 수행하기 위해 사용됩니다.

 

1. `unwrap`:

   - `Option` 또는 `Result` 타입에서 값을 안전하게 추출합니다.

   - `unwrap`은 `Option` 타입에서 `Some` 값을 추출하거나, `Result` 타입에서 `Ok` 값을 추출합니다.

   - `unwrap`은 값의 존재 여부를 검사하지 않고, 값을 강제로 추출합니다. 따라서, 값이 없는 경우(`None` 또는 `Err`)에는 패닉을 일으킬 수 있습니다.

   - 주로 디버깅이나 간단한 예제 코드 작성 시 사용되며, 실제 상용 코드에서는 에러 처리를 명시적으로 수행하는 것이 권장됩니다.

 

2. `?` (Question Mark Operator):

   - `?` 연산자는 함수나 메서드 내에서 `Result`를 반환하는 표현식에서 사용됩니다.

   - `?`은 결과 값을 추출하여 해당 값이 `Ok`인 경우에는 값을 반환하고, `Err`인 경우에는 현재 함수를 호출한 곳으로 `Err` 값을 전파합니다.

   - `?`은 에러 처리를 간편하게 수행할 수 있도록 도와줍니다. 코드의 가독성과 안전성을 높여줍니다.

   - `?`을 사용하려면 현재 함수가 반환하는 타입이 `Result` 타입이어야 합니다.

 

`unwrap`과 `?`의 사용 이유는 다음과 같습니다:

 

- `unwrap`은 값이 확실히 존재할 때, 간단하게 값을 추출하기 위해 사용될 수 있습니다. 하지만 값이 없는 경우에는 패닉을 일으킬 수 있으므로 주의해야 합니다.

- `?`은 함수나 메서드 내에서 에러 처리를 간단하게 수행하고, 에러를 전파하여 중첩된 에러 처리를 줄일 수 있습니다. 코드의 가독성을 향상시키고, 안전한 에러 처리를 도와줍니다.

 

`unwrap`은 주의해서 사용해야 하며, 일반적으로 실제 상용 코드에서는 명시적인 에러 처리와 함께 `?`을 사용하는 것이 권장됩니다. 이를 통해 안전성과 유지보수성을 높일 수 있습니다.

 

'Rust' 카테고리의 다른 글

[RUST] match  (127) 2023.08.10
[RUST] if let  (78) 2023.08.09
[RUST] Some  (38) 2023.08.06
[Rust] mod와 파일 시스템  (109) 2023.07.15
[Rust] 주석  (107) 2023.07.13
profile

DataScience

@Ninestar

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!