๋ด์ฉ์ ๋ํ ์ถ์ฒ: https://stackoverflow.com/a/66364221/13160750
Rust ํ๋ก๊ทธ๋๋ฐ์ ํ๋ค ๋ณด๋ฉด, ์ ์คํฌ๋ฆฐ์ท์ฒ๋ผ Result
๋ Option
enum์ .expect
๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์ข
์ข
์๋ค.
expect ๋ฉ์๋๋ ํด๋น enum์ด Option::Some
์ด๋ฉด ์์ ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฆฌํดํ๋ค.
๋ฐ๋๋ก Option::None
์ด๋ฉด .expect์ ์ธ์ ๋ด์ฉ์ ๊ฐ์ง๊ณ ํจ๋์ ์ผ์ผํจ๋ค.
๊ทธ๋ฐ๋ฐ ์ ๋ฉ์๋ ์ด๋ฆ์ด ํํ .expect์ผ๊น?
๋ญ ๊ธฐ๋ํ๋ค๋ ๊ฑธ๊น? ํ๋ก๊ทธ๋๋จธ๋ก์จ๋ ๋ฉ์๋๋ก๋ถํฐ ํจ๋์ด ์๋ ์ค์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ํ ํ ๋ฐ...
Rust The Book์ด๋ Result
, Option
enum์ ์ค๋ช
๋ฌธ์์๋ expect์ ์ด๋ฆ์ ๊ธฐ์์ ์ฐพ์ ์ ์์๋ค.
๋ค๋ง, Stack Overflow์์ ์ ๋น์ฑ ์๋ ์๊ฒฌ์ ์ฐพ์ ์ ์์๋ค. Rust ์ปดํ์ผ๋ฌ์ ๊ฐ๋ฐ ๊ณผ์ ์์์ expect ๋ฉ์๋์ ๊ธฐ์์ ์ฐพ์ ์ ์๋ค๋ ๋ด์ฉ์ด๋ค.
Rust ์ธ์ด์ ๊ณต์ ์ปดํ์ผ๋ฌ์ธ
rustc
์ ์์ค์ฝ๋๋ฅผ ํตํด,.expect
๋ฉ์๋์ ๊ธฐ์์ ์ถ์ธกํ ์ ์๋ค.rustc ์ปดํ์ผ๋ฌ์ ์์ค์ฝ๋์
Option
struct ์ชฝ ์์ค์ฝ๋์๋ expect์ ๋น์ทํ ์ญํ ์ ํ๋ ํจ์๊ฐ ์ด์ ๋ถํฐ ์กด์ฌํ๋ค.๊ทธ ํจ์๋
expect(p, token::SEMI)
(= "SEMI" ํ ํฐ์ด parse๋๊ธฐ๋ฅผ ์์ํ๊ธฐ)expect_word(p, "let")
(= "let" ํค์๋๊ฐ parse๋๊ธฐ๋ฅผ ์์ํ๊ธฐ)...์ ๊ฐ์ ๊ผด๋ก ์ฐ์๋ค. ๋ง์ฝ ์์ํ ๋๋ก parse๋์ง ์์ผ๋ฉด, ์ปดํ์ผ์ ์คํจ์ํค๊ณ "'let' ํค์๋๋ฅผ ์์ํ์" (
expected keyword 'let'
) ๋ผ๋ ์๋ฌ ๋ฉ์ธ์ง๋ฅผ ๋์ก๋ค.์ฐธ์ผ๋ก ์ ์ฉํ๋ ์ด ํจ์๋ ์ด๋ฆ์ ์ ์งํ ์ฑ ๊ธฐ๋ฅ์ด "
Option
๋ณ์๊ฐSome
์ธ์ง" ํ์ธํ๋ ์ชฝ์ผ๋ก ๋ฐ๋์๊ณ , ๊ฒฐ๊ตญ์๋ Option์ ๋ฉ์๋๊ฐ ๋์๋ค. ๊ทธ๋ฆฌ๊ณ , ํ์ฌ๊น์ง ์ ์ง๋์๋ค.
... ์ฆ, (๊ตณ์ด Rust๊ฐ ์๋๋๋ผ๋) ์ปดํ์ผ๋ฌ ๊ตฌ๋ฌธ ํด์ ์ค๋ฅ๋ก ํํ ๋ณผ ์ ์๋ ๊ด์ฉ ๋ฌธ๊ตฌ์ธ expected keyword 'let'
์๋ฌ๋ฅผ ์ปดํ์ผ๋ฌ์์ ์ฒ๋ฆฌํ๊ณ ๊ตฌํํ๋ ๋ฐ,
๋ ์์ฐ์ค๋ฝ๊ฒ ์ฝ๋๊ฐ ์ฝํ ์ ์๋๋ก expect
๋ผ๋ ๋จ์ด๋ฅผ ์ฐจ์ฉํ ๊ฒ์ด์๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ด ๊ตณ์ด์ง ๊ฒ์ด๋ค.
Stack Overflow์ ์ ๊ธ์์๋ "(expect ๋ฉ์๋์ ์ง๋ ๊ณผ์ ๋ค์ ๋ดค์ ๋) ๊ฐ์ธ์ ์ผ๋ก expect๋ผ๋ ์ด๋ฆ์ด ์ ๋ณ๋ ์ด๋ฆ๊น์ง๋ ์๋ ๊ฒ ๊ฐ๋ค. ์์ฐ์ค๋ฌ์ด ์ด๋ฆ์ฒ๋ผ ๋ณด์ธ๋ค."๋ผ๋ ์ด๋ฆ ํ๊ฐ๋ฅผ ๋ง๋ฏธ์์ ํ์ธํ ์ ์๋ค. ๋๋ ์ด ํ๊ฐ์ ๋์ํ๋ ํธ์ด๋ค.