์ž‘์€ ์˜ˆ์ œ

๋Ÿฌ์ŠคํŠธ๋กœ ์ž‘์„ฑ๋œ ์ž‘์€ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค:

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์— ๋Œ€ํ•œ ๋ฌธ์„œ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค