# 46241์ ๋ํ ์์ ์ฌํญ์ ๊ตฌํํ๋ ๋์ ๋ฐ๊ฒฌ๋์์ต๋๋ค. ํํ ์ผํ ์ง์์ ๋ํด ์ญ์ปด ํจํธ ์ํ์ด ๋ฐ์ํ ์ ์์ง๋ง, ๊ทธ๋ ์ง ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
macro_rules! panic {
() => (/* default message */);
($msg:expr) => (/* use msg as literal */);
($fmt:expr, $($arg:tt)+) => (/* use format_args! */);
}
macro_rules! panic {
() => (/* default message */);
($msg:expr) => (/* use msg as literal */);
($fmt:expr, $($arg:tt)*) => (/* use format_args! */);
}
์ฐจ์ด์ ์ ์ฐพ์ ์ ์์ต๋๊น?
std์ ์ ์๋ ๋จ์ผ ๋ฌธ์์ด ๋ฆฌํฐ๋ด ๋ค์ ํํ ์ผํ๋ฅผ ์ง์ํ์ง ์์ต๋๋ค.
fn main() {
panic!("a");
panic!("a",); //~ ERROR unexpected end of macro invocation
panic!("{}");
panic!("{}",); //~ ERROR unexpected end of macro invocation
}
core์ ์ ์๋ ํํ ์ผํ๋ฅผ ํ์ฉํ์ง๋ง ์ ์ฌ์ ์ผ๋ก ๋ค๋ฅธ ์๋ฏธ๋ฅผ ๊ฐ์ง ์์ ํ ๋ค๋ฅธ ์ฝ๋ ๊ฒฝ๋ก๋ฅผ ๋ฐ๋ฆ ๋๋ค.
#![no_std]
fn main() {
panic!("a");
panic!("a",);
panic!("{}");
panic!("{}",); //~ ERROR 1 positional argument in format string, but no arguments were given
}
~ ๋คํ์ค๋ฝ๊ฒ๋ libcore์ ์ ์๊ฐ ๋ ์์์ด ์ฑ๊ณต์ ์ผ๋ก ์ปดํ์ผ๋๋ ๋ชจ๋ ๊ฒฝ์ฐ์ panic!(<literal>,)
๋ฐ panic!(<literal>)
์ ๋ํด ๋๋ฑํ ๋์์ ์์ฑํ๋ ๊ฒ์ผ๋ก ๋ณด์
๋๋ค . ์ฆ panic!(<literal>,)
๋ฅผ ๋ณ๊ฒฝํด๋ ์์ ํด์ผํฉ๋๋ค panic!(<literal>)
์ฒ๋ผ ๋์ํฉ๋๋ค. ~
์ฐ๋ ๊ธฐ. ๋ด๊ฐ ๋งํ๊ณ ์๋ ์ผ์ข ์ ์ญ ํธํ ์ํ์ ์๋ฅผ ์ฐพ์์ต๋๋ค.
์ค๋๋ ์ Rust์์๋ ๋ค์ ๋ ํ๋ก๊ทธ๋จ์ด ๋ค๋ฆ ๋๋ค.
#![no_std]
fn main() {
panic!("{{}}"); // panics with "{{}}"
}
#![no_std]
fn main() {
panic!("{{}}",); // panics with "{}"
}
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ฐ๋ ๊ธฐ. ๋ด๊ฐ ๋งํ๊ณ ์๋ ์ผ์ข ์ ์ญ ํธํ ์ํ์ ์๋ฅผ ์ฐพ์์ต๋๋ค.
์ค๋๋ ์ Rust์์๋ ๋ค์ ๋ ํ๋ก๊ทธ๋จ์ด ๋ค๋ฆ ๋๋ค.