Duration

Option<T>์˜ ์ผ๋ถ€ ์‚ฌ์šฉ๋ฒ•์€ ์ด๋ฏธ ์‚ดํŽด๋ดค์Šต๋‹ˆ๋‹ค. โ€˜Tโ€™ ํƒ€์ž…์˜ ๊ฐ’์„ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์•„๋ฌด๊ฒƒ๋„ ์ €์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด String::find๋Š” Option<usize>๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

fn main() {
    let name = "Lรถwe ่€่™Ž Lรฉopard Gepardi";
    let mut position: Option<usize> = name.find('รฉ');
    println!("find์˜ ๋ฐ˜ํ™˜๊ฐ’ {position:?}");
    assert_eq!(position.unwrap(), 14);
    position = name.find('Z');
    println!("find์˜ ๋ฐ˜ํ™˜๊ฐ’ {position:?}");
    assert_eq!(position.expect("๋ฌธ์ž๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Œ"), 0);
}
This slide should take about 10 minutes.
  • Option is widely used, not just in the standard library.
  • unwrap์€ Option์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๊ฑฐ๋‚˜ ํŒจ๋‹‰์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. expect๋„ ๋น„์Šทํ•˜์ง€๋งŒ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
    • None ๋ฐœ์ƒ ์‹œ ํŒจ๋‹‰ ์ƒํƒœ๊ฐ€ ๋  ์ˆ˜ ์žˆ์ง€๋งŒ โ€™์‹ค์ˆ˜โ€™๋กœ None์„ ์ฒดํฌํ•˜๋Š” ๊ฒƒ์„ ์žŠ์„ ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.
    • ๋ฌด์–ธ๊ฐ€๋ฅผ ํ•จ๊ป˜ ํ•ดํ‚นํ•  ๋•Œ ๋ชจ๋“  ๊ณณ์—์„œ unwrap/expect๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ด์ง€๋งŒ ํ”„๋กœ๋•์…˜ ์ฝ”๋“œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋” ๋‚˜์€ ๋ฐฉ์‹์œผ๋กœ None์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • ํ‹ˆ์ƒˆ ์ตœ์ ํ™”๋ž€ Option<T>๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ T์™€ ํฌ๊ธฐ๊ฐ€ ๊ฐ™์€ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.