์์ ์์
๋ฌ์คํธ๋ก ์์ฑ๋ ์์ ์์ ์ ๋๋ค:
fn main() { // Program entry point let mut x: i32 = 6; // Mutable variable binding print!("{x}"); // Macro for printing, like printf while x != 1 { // No parenthesis around expression if x % 2 == 0 { // Math like in other languages x = x / 2; } else { x = 3 * x + 1; } print!(" -> {x}"); } println!(); }
์ด ์ฝ๋๋ ์ฝ๋ผ์ธ ์ถ์ธก(Collatz conjecture)์ผ๋ก ๊ตฌํ๋ฉ๋๋ค: ๋ฐ๋ณต๋ฌธ์ด ์ธ์ ๋ ์ข ๋ฃ๋ ๊ฒ์ด๋ผ๊ณ ๋ฏฟ์ง๋ง ์ฆ๋ช ๋ ๊ฒ์ ์๋๋๋ค. ์ฝ๋๋ฅผ ์์ ํ๊ณ ์คํํด ๋ณด์๊ธฐ ๋ฐ๋๋๋ค.
ํค ํฌ์ธํธ:
-
๋ชจ๋ ๋ณ์๊ฐ ์ปดํ์ผ ์ ์ ํด์ง ํ์ ์ ๊ฐ์ง์ ์ค๋ช ํฉ๋๋ค.
i32
๋ฅผ ์ญ์ ํ์ฌ ์ปดํ์ผ๋ฌ๊ฐ ํ์ ์ถ๋ก ์ ํ๋๋ก ํด ๋ด ๋๋ค.i32
์i8
๋ก ๋ณ๊ฒฝํ์ฌ ๋ฐํ์ ์ค๋ฒํ๋ก๋ฅผ ์ ๋ฐํด ๋ณผ ์ ์์ต๋๋ค. -
let mut x
๋ฅผlet x
๋ก ์์ ํ์ฌ ์ปดํ์ผ ์ค๋ฅ์ ๋ํด ํ ๋ก ํฉ๋๋ค. -
์ธ์๊ฐ ํฌ๋งท ๋ฌธ์์ด๊ณผ ์ผ์นํ์ง ์๋ ๊ฒฝ์ฐ
print!
์์ ์ปดํ์ผ ์ค๋ฅ๊ฐ ๋ฐ์ํจ์ ์ธ๊ธํ๋ ๊ฒ๋ ์ข์ต๋๋ค. -
๋จ์ผ ๋ณ์๋ณด๋ค ๋ณต์กํ ์์ ์ถ๋ คํ๋ ค๋ฉด
{}
์ ์๋ฆฌ ํ์์๋ก ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ ์ค๋๋ค. -
ํ์๋ค์๊ฒ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ด๋ ์๋์ง ์๋ ค ์ฃผ๊ณ ๋,
print!
๊ฐ ์ง์ํ๋ ํฌ๋งทํ ์ธ์ด์ ๋ฌธ๋ฒ์ ์๊ธฐ ์ํดstd::fmt
๋ฅผ ๊ฒ์ํด์ผ ํ๋ค๋ ๊ฒ์ ๊ฐ๋ฅด์น์ธ์.ํ์๋ค์ด ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฒ์ ๊ธฐ๋ฅ์ ์ต์ํด ์ง๋๋ก ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.- ์์์
rustup doc std::fmt
๋ฅผ ์ํํ๋ฉด ๋ก์ปฌ ๋ธ๋ผ์ฐ์ ๋กstd:fmt
์ ๋ํ ๋ฌธ์๋ฅผ ๋ณด์ฌ์ค๋๋ค
- ์์์