Rust 1.43 ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ๋ฆด๋ฆฌ์Šค

๊ฒŒ์‹œ ๋จ ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ๋ฆด๋ฆฌ์Šค ๋…น 1.43, Mozilla ํ”„๋กœ์ ํŠธ์— ์˜ํ•ด ์„ค๋ฆฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์–ธ์–ด๋Š” ๋ฉ”๋ชจ๋ฆฌ ์•ˆ์ „์— ์ค‘์ ์„ ๋‘๊ณ  ์ž๋™ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋†’์€ ์ž‘์—… ๋ณ‘๋ ฌ์„ฑ์„ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋Ÿฐํƒ€์ž„.

Rust์˜ ์ž๋™ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ํฌ์ธํ„ฐ ์กฐ์ž‘์œผ๋กœ๋ถ€ํ„ฐ ํ•ด๋ฐฉ๋˜๊ณ , After-Free ๋ฉ”๋ชจ๋ฆฌ ์•ก์„ธ์Šค, ๋„ ํฌ์ธํ„ฐ ์—ญ์ฐธ์กฐ, ๋ฒ„ํผ ์˜ค๋ฒ„๋Ÿฐ ๋“ฑ๊ณผ ๊ฐ™์€ ๋‚ฎ์€ ์ˆ˜์ค€์˜ ๋ฉ”๋ชจ๋ฆฌ ์กฐ์ž‘์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธํ•ฉ๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ฐฐํฌํ•˜๊ณ  ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ ๋ณด์žฅํ•˜๋ฉฐ ํ”„๋กœ์ ํŠธ๋ณ„ ์ข…์†์„ฑ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๊ฐ€ ๊ฐœ๋ฐœ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฑƒ์ง, ํ•œ ๋ฒˆ์˜ ํด๋ฆญ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์— ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ˜ธ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•ด ์ €์žฅ์†Œ๊ฐ€ ์ง€์›๋ฉ๋‹ˆ๋‹ค. crates.io.

์ฃผ์š” ํ˜์‹ :

  • ๋งคํฌ๋กœ๋Š” ์š”์†Œ ์กฐ๊ฐ์„ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์„ฑ(trait), ๊ตฌํ˜„(impl) ๋˜๋Š” ์™ธ๋ถ€ ๋ธ”๋ก์— ๋Œ€ํ•œ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด:

    ๋งคํฌ๋กœ ๊ทœ์น™! mac_trait {
    ($i:ํ•ญ๋ชฉ) => {
    ํŠน์„ฑ T { $i }
    }
    }
    mac_trait! {
    fn foo() {}
    }

    ๋‹ค์Œ ์„ธ๋Œ€๋กœ ์ด์–ด์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค:

    ํŠน์„ฑ T {
    fn foo() {}
    }

  • ๊ธฐ๋ณธ ํ˜•์‹, ์ฐธ์กฐ ๋ฐ ์ด์ง„ ์—ฐ์‚ฐ์˜ ์œ ํ˜• ๊ฐ์ง€๊ฐ€ ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    ์˜ˆ๋ฅผ ๋“ค์–ด, ์ด์ „์— ์˜ค๋ฅ˜๋ฅผ ์ผ์œผ์ผฐ๋˜ ๋‹ค์Œ ์ฝ”๋“œ๋Š” ์ด์ œ ์ปดํŒŒ์ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(Rust๋Š” ์ด์ œ 0.0๊ณผ &0.0์ด f32 ์œ ํ˜•์ด์–ด์•ผ ํ•œ๋‹ค๊ณ  ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค):

    n: f32 = 0.0 + &0.0;

  • ์ƒˆ๋กœ์šด ํ™˜๊ฒฝ ๋ณ€์ˆ˜ CARGO_BIN_EXE_{name}์ด Cargo์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๋ฅผ ๊ตฌ์ถ•ํ•  ๋•Œ ์„ค์ •๋˜๋ฉฐ ํŒจํ‚ค์ง€์˜ "[[bin]]" ์„น์…˜์— ์ •์˜๋œ ์‹คํ–‰ ํŒŒ์ผ์˜ ์ „์ฒด ๊ฒฝ๋กœ๋ฅผ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค๋‹ˆ๋‹ค.
  • If ๋ฌธ์—์„œ๋Š” "#[cfg()]"์™€ ๊ฐ™์€ ์†์„ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋ชจ๋“ˆ์„ ๊ฐ€์ ธ์˜ค์ง€ ์•Š๊ณ ๋„ ์ •์ˆ˜ ๋ฐ ๋ถ„์ˆ˜ ์œ ํ˜•์— ์ง์ ‘ ๊ด€๋ จ ์ƒ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, "use std::u32" ๋ฐ "use std::f32"๋ฅผ ๋จผ์ € ์ง€์ •ํ•˜์ง€ ์•Š๊ณ ๋„ u32::MAX ๋˜๋Š” f32::NAN์„ ์ฆ‰์‹œ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ƒˆ๋กœ์šด ๋ชจ๋“ˆ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค ์›์‹œ์ ์ธ, ์˜ˆ๋ฅผ ๋“ค์–ด ๋งคํฌ๋กœ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ํ•ด๋‹น ์œ ํ˜•์ด ์ˆจ๊ฒจ์ง€์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ Rust ๊ธฐ๋ณธ ์œ ํ˜•์„ ๋‹ค์‹œ ๋‚ด๋ณด๋ƒ…๋‹ˆ๋‹ค.
  • ์•ˆ์ •ํ™”๋œ API๋ฅผ ํฌํ•จํ•˜์—ฌ API์˜ ์ƒˆ๋กœ์šด ๋ถ€๋ถ„์ด ์•ˆ์ •์ ์ธ ๋ฒ”์ฃผ๋กœ ์ด์ „๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

    ์ผ๋‹จ::is_completed,
    f32::LOG10_2,
    f32::LOG2_10,
    f64::LOG10_2,
    f64::LOG2_10 ๋ฐ
    iter::once_with.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€