채널톡 아이콘

우아한 Rust 중급 (5) - Option & Result

Option과 Result를 만나면 일단 unwrap()부터 쓰고 계신가요? 값이 없는 경우와 작업이 실패한 경우를 구분하고, map, and_then, ?로 처리 단계를 연결하는 방법을 배웁니다. 실행 가능한 예제와 종합 실습을 통해 오류를 어디까지 전달하고 어디에서 처리할지 스스로 판단할 수 있습니다.

12명 이 수강하고 있어요.

난이도 중급이상

수강기한 무제한

프로그래밍
프로그래밍
함수형프로그래밍
함수형프로그래밍
프로그래밍
프로그래밍
함수형프로그래밍
함수형프로그래밍
배달의민족
네이버
여기어때컴퍼니

여기어때컴퍼니

임직원들도 이 강의를 듣고 있어요!

배달의민족
네이버
여기어때컴퍼니

여기어때컴퍼니

임직원들도 이 강의를 듣고 있어요!

수강 후 이런걸 얻을 수 있어요

  • 값이 없는 경우와 실패한 경우를 구분해 Option과 Result로 표현할 수 있습니다.

  • unwrap() 대신 상황에 맞는 기본값 처리와 오류 처리 방법을 선택할 수 있습니다.

  • map, and_then, ?를 사용해 여러 처리 단계를 간결하게 연결할 수 있습니다.

  • collect와 transpose로 여러 결과를 모으거나 중첩된 Option과 Result를 변환할 수 있습니다.

  • 오류의 종류를 열거형으로 정의하고, 호출한 쪽에 전달할 오류와 직접 처리할 오류를 구분할 수 있습니다.

값이 없거나 실패해도, 다음 동작이 분명한 Rust 코드 작성

Rust 코드를 작성하다 보면 Option과 Result를 자주 만납니다. 처음에는 unwrap()으로 값을 꺼내지만, 입력이 없거나 예상과 다른 값이 들어오면 어떻게 처리해야 할지 고민하게 됩니다.

이 강의에서는 값이 없는 경우와 작업이 실패한 경우를 구분하는 데서 시작합니다. 기본값을 정하고, 여러 처리 단계를 연결하고, 오류를 호출한 쪽에 전달하는 방법을 차례로 익힙니다. API 이름을 외우기보다 함수를 호출하는 쪽에서 무엇을 알아야 하고, 어떤 결정을 내려야 하는지 살펴봅니다.

사용자 입력을 검사하거나 문자열을 숫자로 변환할 때, 파일을 읽거나 여러 작업의 결과를 모을 때 적용할 수 있습니다. 예제를 직접 실행하고 종합 실습을 완성하면서 오류 처리 코드를 스스로 설계하는 연습을 합니다.

이런 내용을 배워요

(1) Option으로 값이 없는 경우 다루기

Some과 None의 의미를 이해하고, 값이 없을 때 기본값을 사용할지 그대로 전달할지 판단합니다. unwrap_or와 unwrap_or_else의 차이를 살펴보고, map과 and_then으로 값의 변환을 연결합니다. 소유권을 옮기지 않고 내부 값을 빌리거나 take로 값을 꺼내는 방법도 배웁니다.

map과 and_then의 차이

(2) Result로 실패의 이유 표현하기

Ok와 Err로 성공과 실패를 구분하고, 실패한 이유를 코드에 담습니다. map_err로 오류 타입을 바꾸고, 열거형으로 서로 다른 오류를 표현합니다. 무조건 값을 꺼내기보다 호출한 쪽에서 실패에 대응할 수 있도록 함수를 작성합니다.

(3) ?로 오류를 전달하고 필요한 곳에서 처리하기

?가 값을 꺼내는 경우와 함수에서 일찍 반환하는 경우를 살펴봅니다. 함수의 반환 타입에 따라 ?를 어떻게 사용해야 하는지 이해하고, 라이브러리에서 오류를 전달하는 일과 프로그램에서 사용자에게 알리는 일을 구분합니다.

?로 깔끔한 함수 작성

(4) 여러 결과를 모으고 중첩된 타입 정리하기

collect로 여러 Result를 하나의 결과로 모으고, 처리 도중 오류가 발생하면 어떤 일이 일어나는지 확인합니다. ok_or, ok, transpose를 사용해 Option과 Result를 변환하면서 어떤 정보가 유지되거나 사라지는지도 살펴봅니다.

(5) 종합 실습과 퀴즈로 이해 확인하기

입력값을 변환하고 계산 오류를 구분하는 함수를 직접 구현합니다. 정상 입력뿐 아니라 값이 없거나 잘못된 입력이 들어오는 경우도 테스트합니다. 마지막 퀴즈에서는 코드의 실행 결과와 API 선택 이유를 확인하며 배운 내용을 정리합니다.

수강 전 참고 사항

실습 환경

  • Rust와 Cargo를 실행할 수 있는 Windows·macOS·Linux 환경이 필요합니다.

  • Rust 2024 에디션을 지원하는 안정 버전의 Rust를 준비해 주세요.

  • 평소 사용하는 코드 편집기와 터미널로 실습할 수 있습니다.

학습 자료

  • 장별 설명과 코드가 담긴 웹 교재

  • Cargo로 직접 실행할 수 있는 예제 소스 코드

  • 종합 실습 코드와 자동 테스트

  • 핵심 내용을 확인하는 객관식 퀴즈와 풀이

선수 지식 및 유의사항

Rust의 변수·함수·조건문, 구조체·열거형, 소유권과 빌림의 기본 개념을 알고 있다고 가정합니다. match로 값을 구분하는 코드를 읽을 수 있으면 수월하게 따라갈 수 있습니다.

예제를 실행하기 전에 결과를 먼저 예상해 보세요. 실행한 뒤에는 입력을 바꾸어 값이 없는 경우와 오류가 발생하는 경우도 확인해 보시기 바랍니다. 종합 실습에서는 테스트를 통과하는 것과 함께, 해당 반환 타입과 오류 처리 방법을 선택한 이유를 설명해 보는 것을 권합니다.

이런 분들께
추천드려요

학습 대상은
누구일까요?

  • Rust 기본 문법은 배웠지만 Option과 Result를 다룰 때마다 막히는 분

  • unwrap()이나 반복되는 match에 의존하던 코드를 개선하고 싶은 분

  • ?를 언제 쓸 수 있고 오류가 어떻게 전달되는지 정확히 이해하고 싶은 분

  • 입력값 검증과 오류 처리를 직접 구현하고 테스트로 확인해 보고 싶은 분

선수 지식,
필요할까요?

  • Rust의 변수·함수·조건문 등 기본 문법을 알고 있어야 합니다.

  • 소유권과 빌림, 참조의 기본 개념을 이해하고 있으면 좋습니다.

  • 구조체와 열거형을 정의하고, match로 값을 구분하는 코드를 읽을 수 있어야 합니다.

  • Cargo로 예제를 실행하고 테스트하는 방법을 알고 있으면 실습을 따라가기 수월합니다.

안녕하세요
김대현입니다.

커리어인증

2,264

명

수강생

176

개

수강평

27

개

답변

4.7

점

강의 평점

11

개

강의

함수형 프로그래밍에 관심이 많은 백엔드 개발자입니다. 카카오 개발팀장, NHN 수석, LINE+ 리드를 지내며 개발팀 리딩을 했고, 디노티시아라는 AI스타트업에서 개발팀장으로 일하며 Rust로 프로젝트를 진행했습니다.

수강평

아직 충분한 평가를 받지 못한 강의입니다.
모두에게 도움이 되는 수강평의 주인공이 되어주세요!

김대현님의 다른 강의

지식공유자님의 다른 강의를 만나보세요!

비슷한 강의

같은 분야의 다른 강의를 만나보세요!

얼리버드 할인 중

₩6,600

40%

₩11,000

평생교육이용권 지원 강의