๋‚ด์šฉ์— ๋Œ€ํ•œ ์ถœ์ฒ˜: https://stackoverflow.com/a/66364221/13160750

env::var("tableName").expect("failed to resolve table") ๋ผ๋Š” ๋‚ด์šฉ์˜ Rust ์†Œ์Šค์ฝ”๋“œ.

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๋ผ๋Š” ์ด๋ฆ„์ด ์œ ๋ณ„๋‚œ ์ด๋ฆ„๊นŒ์ง€๋Š” ์•„๋‹Œ ๊ฒƒ ๊ฐ™๋‹ค. ์ž์—ฐ์Šค๋Ÿฌ์šด ์ด๋ฆ„์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค."๋ผ๋Š” ์ด๋ฆ„ ํ‰๊ฐ€๋ฅผ ๋ง๋ฏธ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‚˜๋„ ์ด ํ‰๊ฐ€์— ๋™์˜ํ•˜๋Š” ํŽธ์ด๋‹ค.