Option, Result
Result
λ Option
κ³Ό μ μ¬νμ§λ§ μμ
μ μ±κ³΅ λλ μ€ν¨λ₯Ό λνλ΄λ©°, κ°κ° νμ
μ΄ λ€λ¦
λλ€. μ΄λ ννμ μ°μ΅μμ μ μλ Res
μ μ μ¬νμ§λ§ μ λ€λ¦: Result<T, E>
μ
λλ€. μ¬κΈ°μ T
λ Ok
λ³νμ μ¬μ©λκ³ E
λ Err
λ³νμ νμλ©λλ€.
use std::fs::File; use std::io::Read; fn main() { let file: Result<File, std::io::Error> = File::open("diary.txt"); match file { Ok(mut file) => { let mut contents = String::new(); if let Ok(bytes) = file.read_to_string(&mut contents) { println!("λ€μ΄μ΄λ¦¬: {contents}({bytes}λ°μ΄νΈ)"); } else { println!("νμΌ μ½ν μΈ λ₯Ό μ½μ μ μμ΅λλ€."); } } Err(err) => { println!("λ€μ΄μ΄λ¦¬λ₯Ό μ΄ μ μμ΅λλ€. {err}"); } } }
This slide should take about 10 minutes.
Option
μ λ§μ°¬κ°μ§λ‘, μ±κ³΅ν κ²½μ°μ κ°μResult
λ΄λΆμ μμ΅λλ€. κ·Έλμ, κ°λ°μλ λͺ μμ μΌλ‘ μ΄λ₯Ό μΆμΆνμ¬μΌ ν©λλ€. μ΄λ κ² ν¨μΌλ‘μ¨ κ°μ μ½κΈ° μ μ μ€λ₯ λ°μ μ¬λΆλ₯Ό λ°λμ 체ν¬νλλ‘ μ λνκ³ μμ΅λλ€. λ§μΌ μ€λ₯κ° μ λ λ°μνμ§ μλ κ²½μ°λΌλ©΄unwrap()
μ΄λexpect()
λ₯Ό μ¬μ©ν μ μμΌλ©°, μ΄λ κ°λ°μμ μλ(μμ£Ό: μ€λ₯κ° λ°μν μ μμ)μ λͺ μμ μΌλ‘ λνλ΄λ λ°©λ²μ΄κΈ°λ ν©λλ€.Result
documentation is a recommended read. Not during the course, but it is worth mentioning. It contains a lot of convenience methods and functions that help functional-style programming.Result
λ μ€λ₯ μ²λ¦¬λ₯Ό μν νμ€ νμ μ λλ€. 3μΌμ°¨ κ³Όμ μμ μ΄ν΄λ΄ λλ€.