[Rust] assert
assert๋ Rust์ ์ ์ฉํ ํ์ค ๋งคํฌ๋ก ์ค ํ๋๋ค.
๋ค๋ฅธ ์ธ์ด๋ค์ assertion ๊ธฐ๋ฅ๋ค๊ณผ ํฌ๊ฒ ๋ค๋ฅด์ง๋ ์๋ค.
ํ ์คํธ๋ฅผ ์ง๊ฑฐ๋, ๋ฌด๊ฒฐ์ฑ์ ์ง์์ ์ผ๋ก ์ถ์ ํ ํ์๊ฐ ์์ ๋๋ ๊ฑฐ์ ํ์ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ค.
๊ทธ ์ฌ์ฉ๋ฒ์ ๋ํด ๊ฐ๋ตํ ์ ๋ฆฌํด๋ณด๊ฒ ๋ค.
๊ธฐ๋ณธ assert
๊ธฐ๋ณธ assert๋ true/false ๊ฐ๋ง์ ๋ฐ๋๋ค.
true๋ฉด ํต๊ณผํ๊ณ
false๋ฉด ํจ๋์ด ๋ฐ์ํ๋ค.
๊ทธ๋ฆฌ๊ณ , ์ถ๊ฐ ์ธ์๋ก ํจ๋ ๋ฉ์ธ์ง๋ฅผ ์ปค์คํ
ํ ์ ์๋ค.
์ด๊ฑฐ๋ format ๊ธฐ๋ฐ์ด๋ผ์ ๋ฉ์ธ์ง์ ๊ฐ์ ์ด๋์ ๋ ๊ตฌ๊ฒจ๋ฃ์ ์ ์๋ค.
assert_eq
assert_eq๋ ๋น๊ต ์ ์ฉ ์์ปท์ด๋ค.
์ธ์ 2๊ฐ ๋ฐ๊ณ , ๊ฐ์ด ๋ค๋ฅด๋ฉด ํจ๋์ ๋์ง๋ค.
์ด๊ฒ๋ ๋ง์ฐฌ๊ฐ์ง๋ก ํจ๋ ๋ฉ์ธ์ง ์ปค์คํ
์ด ๋๊ณ
๋จ์ํ
์คํธ ์งค๋ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ๋
์์ด๋ค.
์ด๋ฐ ๋๋์ผ๋ก ์ฐ๋ฉด ๋๋ค.
๋ฐ๋ ๋ถ์ ๋ฒ์ ์ผ๋ก assert_ne๊ฐ ์๊ธด ํ๋ฐ, ๋ฑํ ์ด์ ์ ์๋ ๊ฒ ๊ฐ๋ค. ์ธ์ผ์ด ๋ณ๋ก ์๋ค.
debug_assert
๊ทผ๋ฐ ๋จ์ํ
์คํธ์ ๋ณ๊ฐ๋ก, ์ฝ๋ ์ฌ์ด์ฌ์ด์๋ ๋ฌด๊ฒฐ์ฑ์ ๋ํ ๊ฒ์ฆ์ ๋ผ์๋ฃ๊ณ ์ถ์ ์๋ ์๋ค.
๊ทธ๋ ๋ค๊ณ ๋ assert๋ฅผ ๋ก์น ํ๋ฉด, ์ด๊ฒ๋ ๋ฐํ์์ ์คํ๋๋ ๊ฒ์ด๋ค๋ณด๋ ์ฑ๋ฅ ์์ค์ด ๋ฐ์ํ๋๊ฒ ์ ๊ฒฝ์ฐ์ธ๋ค.
๊ทธ๋ด๋ ์ฌ์ฉํ๋ ๊ฒ์ด debug_assert๋ค.
์ด๋ฐ ์์ผ๋ก ํจ์ ๋ด์์ ์ฌ์ ์กฐ๊ฑด์ด๋ ์ฌํ์กฐ๊ฑด, ํน์ ์ค๊ฐ์ค๊ฐ์ ํด๋น ์กฐ๊ฑด์ด ๋ณด์ฅ๋์ด์ผ ํจ์ ์ฝ๋๋ก ๋ช
์ํ ์ ์๋ค. ์ฌ์ค ์ ์ฝ๋์ ๊ฒฝ์ฐ์๋ ์์๊ฐ ๋ค์ด๊ฐ๋ฉด ์กฐ๊ฑด์ด ๊นจ์ง๊ธด ํด์ ์ฌ๋ฐ๋ฅธ ์๋ ์๋๋ค.
์๋ฌดํผ ์ด๊ฑด assert์ ๋์์ ๊ฑฐ์ ๊ฐ์ง๋ง, release ๋น๋์์๋ ์ฝ๋์์ ์ ๊ฑฐ๋๊ธฐ ๋๋ฌธ์ ์์ค์ด ๋ณ๋ก ์๋ค.
๊ฐ๋ฐ ์ค์๋ง ์ฒดํฌ๊ฐ ๋๋ค.
๊ทธ๋์ ๋ง์ฝ ์กฐ๊ฑด์ ์๋ฐฐ๋๋ ์ฝ๋๊ฐ ์๋๋ผ๋, ๊ฐ๋ฐ ๋ชจ๋์์๋ง ๋ป๋๊ณ , release ๋ชจ๋๋ก ์คํํ๋ฉด ์ ๋๋ค.
์ฐธ์กฐ
https://doc.rust-lang.org/std/macro.debug_assert.html