[Rust] if let, while let ๊ตฌ๋ฌธ. refutable ํŒจํ„ด

if let ๊ตฌ๋ฌธ์€ ์•„๋ž˜์˜ ํ˜•์‹์„ ๊ฐ€์ง„๋‹ค.
if let ํŒจํ„ด = ๊ฐ’

๊ฐ’์ด ํ•ด๋‹น ํŒจํ„ด์— ๋Œ€์‘๋œ๋‹ค๋ฉด ํŒจํ„ด์‹์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ๋ถ„๊ธฐ๋กœ ์ ‘์–ด๋“ ๋‹ค.
์•„๋ž˜ ์ฝ”๋“œ๋Š” Option ๊ฐ’์„ ๊ฐ–๋‹ค๊ฐ€ ๋งค์นญ์‹œํ‚ค๋Š” ๊ฐ„๋‹จํ•œ ์ฝ”๋“œ๋‹ค.

while let๋„ ๋™์ผํ•œ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„๋‹ค.
์•„๋ž˜์˜ ์ฝ”๋“œ๋Š” ๋ฌดํ•œ๋ฃจํ”„๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.

๊ทผ๋ฐ ์œ ์˜ํ•ด๋‘˜ ์ ์ด ์žˆ๋‹ค.
if let์ด๋‚˜ while let์˜ ํŒจํ„ด์—๋Š” ๋ฐ˜๋ฐ•๋  ์ˆ˜ ์žˆ๋Š”(refutable) ํŒจํ„ด๋งŒ์ด ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
์œ„์—์„œ ์ผ๋˜ ์ฝ”๋“œ๋Š” refutable ํŒจํ„ด์ด์—ˆ๋‹ค. ์ „์ฒด ์ฝ”๋“œ๊ฐ€ ์–ด์จŒ๊ฑด๊ฐ„์— ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋‹ค ๋ถ„์„ํ•  ์ˆ˜๋Š” ์—†๊ณ , ์ž ์žฌ์ ์œผ๋กœ ํ•ด๋‹น ํŒจํ„ด์€ ์‹คํŒจ๋ฅผ ํ•  ๊ฐ€๋Šฅ์„ฑ์„ ๋‚ดํฌํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. num์˜ ๊ฐ’์ด Some์ธ์ง€ None์ธ์ง€ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์–ด์ฐŒ ์•Œ๊ฒ ๋Š”๊ฐ€?

๊ทธ๋ ‡๋‹ค๋ฉด ๋ฐ˜๋ฐ•๋  ์ˆ˜ ์—†๋Š”(irrefutable) ํŒจํ„ด์€ ๋ฌด์—‡์ผ๊นŒ?
๊ฐ„๋‹จํ•˜๋‹ค. ์ด๋Ÿฐ๊ฑฐ๋‹ค.

let val = 5422๋ž€ ํŒจํ„ด์€ ๋ฌด์กฐ๊ฑด ์„ฑ๊ณตํ•  ์ˆ˜๋ฐ–์— ์—†๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๋ฐ˜๋ฐ•(์‹คํŒจ)๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด๋Ÿฐ๋ฐ๋‹ค๊ฐ€ ๋ถ„๊ธฐ๋ฅผ ๋ผ์›Œ๋‘๋ฉด ๋‹น์—ฐํžˆ ๋ฌด์˜๋ฏธํ•œ ๋ถ„๊ธฐ๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค...
์“ธ๋ฐ์—†๋Š” ์ฝ”๋“œ๋ฅผ ์˜ˆ๋ฐฉํ•˜๊ธฐ ์œ„ํ•ด ์„ค์น˜ํ•ด๋‘” ๊ฐ„๋‹จํ•œ ์•ˆ์ „์žฅ์น˜๋ผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ ‡๋‹ค.


์ฐธ์กฐ
https://doc.rust-lang.org/book/ch18-02-refutability.html#refutability-whether-a-pattern-might-fail-to-match