Rust: `..=` ํฌํ•จ ๋ฒ”์œ„์— ๋Œ€ํ•œ ์ถ”์  ๋ฌธ์ œ(RFC #1192) -- ์›๋ž˜ `...`

์— ๋งŒ๋“  2015๋…„ 09์›” 04์ผ  ยท  331์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: rust-lang/rust

ํ˜„์žฌ ์ƒํƒœ

ํฌ๊ด„์ ์ธ ๋ฒ”์œ„ ๋ฐ ํŒจํ„ด์— ๋Œ€ํ•œ ๊ตฌ๋ฌธ์„ ..= ๋กœ ๋ณ€๊ฒฝํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค. ํŒจํ„ด์˜ ... ๊ตฌ๋ฌธ์€ ์•ˆ์ •์ ์ด๋ฉฐ ๋‹น๋ถ„๊ฐ„ (์กฐ์šฉํžˆ) ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Rustfmt ๋Š” ... ๋ฅผ ..= ๋‹ค์‹œ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋งŽ์€ ํ† ๋ก  ํ›„์— ๋‚˜์˜ต๋‹ˆ๋‹ค. ์ •๋‹น์„ฑ์„ ์œ„ํ•ด ์ด ์ฃผ์„์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

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

์ทจํ•ด์•ผ ํ•  ๋‹จ๊ณ„

B-RFC-implemented B-unstable C-tracking-issue E-mentor T-lang T-libs disposition-merge finished-final-comment-period

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

lang ํŒ€์€ ์˜ค๋Š˜ ํšŒ์˜์—์„œ ์ด ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ๋‹ค์‹œ ๋…ผ์˜ํ–ˆ๊ณ  ๋Œ€๋žต ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋งคํŠธ๋ฆญ์Šค์— ๋„๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ํŒจํ„ด์—์„œ ... ๋ฅผ ์ง€์›ํ•˜๊ณ  ํ‘œํ˜„์‹์—์„œ .. ํ•˜๋Š” ๊ฒƒ์€ ์ง€์ง€ํ•  ์ˆ˜ ์—†๋Š” ๋””์ž์ธ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์‚ฌ์šฉ์ž๊ฐ€ ๊ตฌ๋ฌธ์ด ์ž‘๋™ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ๊ธฐ๋Œ€ํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

  • ... ๋ฐ .. ๋ฅผ ๋‘ ์œ„์น˜์— ๋ชจ๋‘ ํ—ˆ์šฉํ•˜๋ฉด ๋„์›€์ด ๋˜์ง€๋งŒ ๊ฐœ๋ณ„ ๋ฌธ์ œ๋Š” ์‹ค์ œ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ์ค‘ ๋ˆ„๊ตฌ๋„ ์ž˜๋ชป๋œ ๊ธฐ๊ฐ„์„ ์ถ”์ ํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์„ ๋ณด๋‚ด๋Š” ์‚ฌ๋žŒ๋“ค์— ๋Œ€ํ•œ ๋ณด๊ณ ๋ฅผ ๋ฐ›๊ณ  ์‹ถ์–ดํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • ..= ๋ฐ .. ๊ฒƒ์€ ๋ฏธํ•™์ ์œผ๋กœ ๋œ ๋งค๋ ฅ์ ์ด์ง€๋งŒ ์œ„์˜ ์‹ค์ œ ์ ์ธ ์‹ค์ œ ๋ฌธ์ œ๋ฅผ ํ”ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„์ฃผ ๋ถ€๋“œ๋Ÿฌ์šด ๋ฐฉ์‹์œผ๋กœ ๋กค์•„์›ƒํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋จผ์ € ..= ๋ฅผ ๋Œ€์•ˆ ๊ตฌ๋ฌธ์œผ๋กœ ๋„์ž…ํ•˜๊ณ (rustfmt ๊ฐ€ ๋‹ค์‹œ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Œ), ๊ด€์šฉ์ ์ด ๋œ ํ›„์—๋งŒ ... ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋งํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•˜์—ฌ ํŒ€์€ ..= ๋ฐ .. ๊ฐ€ ์šฐ๋ฆฌ์˜ ์ตœ์„ ์˜ ๊ธธ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ๋˜ํ•œ ์ƒˆ๋กœ์šด ์ฃผ์žฅ์ด ์ œ๊ธฐ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋งค์šฐ ๋‚ฎ๋‹ค๋Š” ์ ์—์„œ ๋…ผ์˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ๋›ฐ์–ด๋“ค ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋‘ ๊ฐ€์ง€ ๋ชจ๋‘์— ๋Œ€ํ•ด ..= ํ‘œ๊ธฐ๋ฒ•์„ ๊ตฌํ˜„ํ•˜๊ณ ์ž ํ•˜๋Š” ์‚ฌ๋žŒ์„ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํŒจํ„ด๊ณผ ํ‘œํ˜„, ๊ทธ๋ฆฌ๊ณ  ์ด์–ด์„œ ์šฐ๋ฆฌ๋Š” FCP๋กœ ๊ฐˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค!

๋ชจ๋“  331 ๋Œ“๊ธ€

์•„๋งˆ๋„ a..b| ๋˜๋Š” a..b]

๋‚˜๋Š” ์ด๊ฒƒ์ด ๋‹จ์ˆœํ•œ ์˜คํƒ€(.. vs ...) ๋•Œ๋ฌธ์— ๋ฏธ๋ž˜์— ์˜ˆ์ธกํ•  ์ˆ˜ ์—†๋Š” ์ƒˆ๋กœ์šด ์ข…๋ฅ˜์˜ ์˜ค๋ฅ˜์— ๋Œ€ํ•œ ๊ธธ์„ ์—ด ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ....(4 ๊ธฐ๊ฐ„)์ด๋ฉด ๋” ์ข‹์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ธ์  ์š”์†Œ์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.

https://github.com/rust-lang/rfcs/pull/1592 ๋ฐ https://github.com/rust-lang/rfcs/pull/1582๋ฅผ ๊ฒฐํ•ฉํ•˜์—ฌ ..= ๋Œ€์‹  ๊ตฌ๋ฌธ. ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋” ํฐ ํŠœํ”Œ ์•ž์— ์žˆ๋Š” ํŠœํ”Œ์„ ํ™•์žฅํ•˜๊ธฐ ์œ„ํ•ด (head..., tail) ๋ณด๋‹ค ๋” ๋‚˜์€ ๊ตฌ๋ฌธ์„ ์ƒ๊ฐํ•  ์ˆ˜ ์—†๋‹ค๋ฉด.

๋‚˜๋Š” ๋ฐฐํƒ€์  ๋ฒ”์œ„๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋‚ด ์ฝ”๋“œ์— _off-by-one- dot _ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ‘Ž ... ๊ตฌ๋ฌธ. ํ•˜๋‚˜์”ฉ ์˜ค๋ฅ˜๋ฅผ ์ผ์œผํ‚ค๋Š” ์ž˜๋ชป ์ž…๋ ฅํ•˜๊ธฐ ์‰ฌ์šด ๊ตฌ๋ฌธ์„ ๊ฐ–๋Š” ๊ฒƒ์€ ์ด์•Œ์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ธฐ๋Šฅ์€ ์œ ์šฉํ•˜๋ฏ€๋กœ ..= ์™€ ๊ฐ™์ด ๋‹ค๋ฅธ ๊ตฌ๋ฌธ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์— ๋Œ€ํ•œ ๊ตฌ๋ฌธ์€ ๊ณต๊ฐœ ์งˆ๋ฌธ์ž…๋‹ˆ๊นŒ? ... ์ด ์ด๋ฏธ match ๋ฌธ์— ์žˆ์œผ๋ฏ€๋กœ ๋ฐฐ๊ฐ€ ํ•ญํ•ดํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ์ธ์ ์œผ๋กœ ... ํฌํ•จ ๋ฒ”์œ„๋ฅผ ์„ ํ˜ธํ•˜์ง€๋งŒ ์ด๋ฏธ .. ๋…์  ๋ฒ„์ „์ด ์žˆ์œผ๋ฏ€๋กœ ๋ฌธ์ œ์˜ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. #23635๋ฅผ ๋ณธ ํ›„์—๋Š” .. ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ... ๋งŒ ํ—ˆ์šฉํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ €๋Š” C์™€ ๊ฐ™์€ for ๋ฃจํ”„ for i in 0..foo.len() ์— ์™„๋ฒฝํ•˜๊ฒŒ ๋งž๋Š” ๊ฒฝ์šฐ ํฌ๊ด„์ ์ธ ๋ฒ”์œ„๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๊ทธ๋Œ€๋กœ ๋‘๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค(Rust์˜ ๋ฐ˜๋ณต์ž๋Š” "1์ฐจ์›"์ด๊ณ  ์ข…์ข… 2D ๋ฐฐ์—ด ๋˜๋Š” ๋น„์„ ํ˜• ๋ฐ˜๋ณต๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๊ธฐ์—๋Š” ๋„ˆ๋ฌด ์–ด์ƒ‰ํ•จ).

ํฌ๊ด„์ ์ธ ๋ฒ”์œ„์— ๋Œ€ํ•œ ์˜ค๋ฒ„ํ”Œ๋กœ ๋ฌธ์ œ๋Š” ์–ด๋ฆฌ์„์€ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” Rust๊ฐ€ usize ์ด์™ธ์˜ ๋‹ค๋ฅธ ์œ ํ˜•๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์งœ์ฆ๋‚˜๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ œ๋กœ๋Š” ์ด ๋ฌธ์ œ์— ๋ถ€๋”ชํžŒ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค. for i in 0..(len as usize) ๋ฒ”์œ„๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์บ์ŠคํŠธํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ์–ด์จŒ๋“  ๋ฃจํ”„ ๋‚ด์—์„œ i as usize 6๋ฒˆ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ตฌ๋ฌธ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๊ธฐ๋Šฅ์ด ์ œํ•œ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ๋ฐฐ๊ฐ€ ํ•ญํ•ดํ•˜์ง€ ์•Š์•˜์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค.

swift๊ฐ€ ํฌํ•จ์— ... ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋…์  ๋ฒ”์œ„์— ..< ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์ ์„ ๊ณ ๋ คํ•˜๋ฉด ํฌํ•จ์— ..= ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฝค ํ•ฉ๋ฆฌ์ ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

์œ ์šฉํ•œ ํ†ต์ฐฐ๋ ฅ์ด ์—†์ง€๋งŒ ํฌ๊ด„์ ์ธ ๋ฒ”์œ„์—์„œ "์‹คํ—˜์ " ์ƒํƒœ๋ฅผ ์ข…๋ฃŒํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. Rust By Example์„ ์ง„ํ–‰ํ•˜๋ฉด์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์ ์„ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์Šค๋‹ˆํŽซ์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค.

fn fizzbuzz_to(n: u32) {
    for n in 1..n + 1 {
        fizzbuzz(n);
    }
}

์œ„๋กœ ? ๐Ÿ˜„

a ..= b ๊ตฌ๋ฌธ ๋ฐ ์ผ๋ฐ˜ํ™”๋œ ๋ฒ”์œ„์— ๋Œ€ํ•œ RFC๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ด๋Ÿฌํ•œ ๋ฒ”์œ„๊ฐ€ ํ‘œํ˜„๋˜๋Š” ๋ฐฉ์‹์— ๋Œ€ํ•ด ๋…ผ์˜ ํ•˜๊ธฐ ์œ„ํ•ด

IMHO ..= ์ด์ƒํ•ด ๋ณด์ž…๋‹ˆ๋‹ค. ์ €๋Š” ... ๋ฐ ..<์— ๋Œ€ํ•œ Swift์˜ ์ ‘๊ทผ ๋ฐฉ์‹์ด ๋” ์ข‹์•„ ๋ณด์ž…๋‹ˆ๋‹ค. ์ €๋Š” ๋‘ ๊ฐœ์˜ ์ ๋ณด๋‹ค ์ค„์ž„ํ‘œ๋ฅผ ์„ ํ˜ธํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ค„์ž„ํ‘œ๋Š” ์ƒ๋žต์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ ๋ฒ”์œ„์˜ ์‹œ์ž‘๊ณผ ๋ ์‚ฌ์ด์˜ ์ˆซ์ž๋ฅผ ์ƒ๋žตํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์—ฌ์ „ํžˆ ... ๊ทธ๋ฆฌ๊ณ  .. ์ถฉ๋ถ„ํžˆ ์ข‹์•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. 1๊ฐœ์˜ ๋ฌธ์ž ์ฐจ์ด๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ +/- ๋˜๋Š” x/y ๋˜๋Š” ๊ทธ ๋ฐ–์˜ ๊ฒƒ๋ณด๋‹ค ์‹ค์ˆ˜๋ฅผ ํ•˜๊ธฐ๊ฐ€ ๋” ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

์ด์ „์— ๋‚ด๊ฐ€ ์ด๊ฒƒ์„ ์ž˜๋ชป ์ดํ•ดํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—(๊ทธ๋ž˜์„œ ๋‚ด ์˜๊ฒฌ์„ ์‚ญ์ œํ–ˆ์Šต๋‹ˆ๋‹ค):

Rust์˜ RFC ํ”„๋กœ์„ธ์Šค์— ๋”ฐ๋ผ ์ด ์ œ์•ˆ์€ RFC pull request 1192 ์—์„œ ์ด๋ฏธ ๊ฒ€ํ† , ๋…ผ์˜ ๋ฐ ์Šน์ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ํ˜ธ์—์„œ๋Š” ์ด์ „์— ๊ฒฐ์ •๋œ ์‚ฌํ•ญ์˜ โ€‹โ€‹๊ตฌํ˜„์„ ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค. ํ† ๋ก ์—์„œ๋Š” ์‚ฌ๋žŒ๋“ค์ด ์—ฌ๊ธฐ์—์„œ ์ œ๊ธฐํ•˜๋Š” ๋งŽ์€ ์š”์ ์„ ๋‹ค๋ค˜์Šต๋‹ˆ๋‹ค: ๋Œ€์ฒด ๊ตฌ๋ฌธ(์ƒˆ ๊ตฌ๋ฌธ ์—†์Œ ํฌํ•จ), Ruby์˜ ์œ ์‚ฌํ•œ ์—ฐ์‚ฐ์ž์™€์˜ ๋Œ€์กฐ ๋“ฑ.

๊ธฐ๋Šฅ์ด ๋‹ฌ๋ผ์•ผ ํ•œ๋‹ค๊ณ  ๊ฐ•ํ•˜๊ฒŒ ๋Š๋‚€๋‹ค๋ฉด ๋™์ผํ•œ RFC ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฑฐ์ณ์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์•ผ ์–ธ์–ด๊ฐ€ ๋ณ€๊ฒฝ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ๋ฌธ์ œ๋Š” ๊ทธ๋Ÿด ๋ฌธ์ œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

@jimblandy ์–ด์ฉŒ๋ฉด ์šฐ๋ฆฌ๋Š” @nikomatsakis๊ฐ€ ๊ทธ ์ •์ค‘ํ•œ ์•Œ๋ฆผ๊ณผ ์ง€์นจ์„ ์ง„์ •ํ•œ ๋น… ํ”„๋ฆฐํŠธ์˜ ์ฒซ ๋ฒˆ์งธ ๋Œ“๊ธ€๋กœ ํŽธ์ง‘ํ•˜๋„๋ก ํ•ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๐Ÿ˜‡

@shepmaster _๋ชจ๋“ _ ์ถ”์  ๋ฌธ์ œ๋ฅผ ์ œ์ถœํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ํ…œํ”Œ๋ฆฟ์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ† ๋ก /๊ฐ€๋Šฅํ•œ FCP ์ง€๋ช…

@rust-lang/lang ํšŒ์˜์—์„œ ์ด์— ๋Œ€ํ•ด ๋…ผ์˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์ „๋ฐ˜์ ์ธ ๋ถˆ๋งŒ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์ง€๋งŒ ๋‹น๋ถ„๊ฐ„ ๋ณด๋ฅ˜ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ... ๋Œ€ํ•œ ๋‘ ๊ฐ€์ง€ ์ฃผ์š” ๋ฐ˜๋Œ€ ์˜๊ฒฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • .. ์™€ ... ์‚ฌ์ด์˜ ํ˜ผ๋™ ์šฉ์ด์„ฑ ;
  • @aturon ์€ "์™„์ „ํžˆ ๊ฐ€๋Šฅํ•œ" ๋ฒ”์œ„ ๊ตฌ๋ฌธ์„ ๊ฐ–๋Š” ๊ฒƒ์ด ๋” ๋‚ซ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ btree ๋ฐ˜๋ณต ๋“ฑ๊ณผ ๊ฐ™์€ API์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฅผ ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” ์‚ฌ๋žŒ๋“ค์ด ํ•˜ํ•œ ๋ฐ ์ƒํ•œ์ด ํฌ๊ด„์ ์ธ์ง€ ๋ฐฐํƒ€์ ์ธ์ง€๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋” ์ผ๋ฐ˜์ ์ธ ๊ตฌ๋ฌธ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” RFC๋ฅผ ๊ธฐ๊บผ์ด ์ถ”์ง„ํ•  ์‚ฌ๋žŒ์ด ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” @aturon ์ด ๊ทธ๋Ÿฌํ•œ RFC์—์„œ ๋ˆ„๊ตฐ๊ฐ€์™€ ํ•จ๊ป˜ ์ผํ•˜๊ฒŒ ๋˜์–ด

๋‚˜๋Š” ์ž ์‹œ ๋ฉˆ์ท„๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ์ตœ๊ทผ์— libstd์—์„œ ์™„์ „ํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ ๋ฒ”์œ„๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ํ† ๋ก  ์Šค๋ ˆ๋“œ( ์œ„์— ๋งํฌ๋จ)๋ฅผ ์—ด์—ˆ์ง€๋งŒ ์•„๋ฌด๋„ ์–ธ๊ธ‰ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.(

์œ„์˜ ์ •๋ณด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ƒˆ๋กœ์šด RFC๋ฅผ ๊ธฐ๊บผ์ด ๋„์™€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ตœ๊ทผ์— libstd(์œ„์— ๋งํฌ๋จ)์—์„œ ์™„์ „ํ•œ ๋ฒ”์œ„๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ํ† ๋ก  ์Šค๋ ˆ๋“œ๋ฅผ ์—ด์—ˆ์ง€๋งŒ ์•„๋ฌด๋„ ์–ธ๊ธ‰ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ์–ด๋Š ์ •๋„ ๊ทธ๋“ค์˜ ์œ ์šฉ์„ฑ์„ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.
์ž„์˜์˜ ํฌ๊ด„์ -๋ฐฐํƒ€์  ๋ฒ”์œ„๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์€ ์ข‹์€ ์ƒ๊ฐ์ฒ˜๋Ÿผ ๋“ค๋ฆฌ์ง€๋งŒ .. ์™€ ํ›จ์”ฌ ์ ์€ ์ˆ˜์ค€์œผ๋กœ ... ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ๊ฒƒ์€ ์ ˆ๋Œ€ ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค.

@durka

๋‚˜๋Š” ์ž ์‹œ ๋ฉˆ์ท„๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ libstd(์œ„ ๋งํฌ)์—์„œ ์™„์ „ํ•œ ๊ธฐ๋Šฅ ๋ฒ”์œ„๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ํ† ๋ก  ์Šค๋ ˆ๋“œ๋ฅผ ์—ด์—ˆ์ง€๋งŒ ์•„๋ฌด๋„ ์–ธ๊ธ‰ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.(

์ด๊ฒƒ์€ ๋Œ€๋žต ์šฐ๋ฆฌ๊ฐ€ ์—ผ๋‘์— ๋‘” ์ ‘๊ทผ ๋ฐฉ์‹๊ณผ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค.


@petrochenkov

์ž„์˜์˜ ํฌ๊ด„์ -๋ฐฐํƒ€์  ๋ฒ”์œ„๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์€ ์ข‹์€ ์ƒ๊ฐ์ฒ˜๋Ÿผ ๋“ค๋ฆฌ์ง€๋งŒ ..๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ๊ฒƒ์ด .. ๊ทธ๋ฆฌ๊ณ  ํ›จ์”ฌ ์ ์€ ... ์ •๋„๋Š” ์ ˆ๋Œ€ ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค.

์†”์งํžˆ ๋งํ•ด์„œ ๋™์˜ํ•˜์ง€๋งŒ, ์—ฌ์ „ํžˆ ๋” ์ผ๋ฐ˜์ ์ธ ๊ตฌ๋ฌธ์„ ์ถ”๊ตฌํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ... ๋Š” ์ฐจ์„ ์ฑ…์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ..= ๋˜๋Š” ๋” ๋ช…์‹œ์ ์ธ ๊ฒƒ์œผ๋กœ ์ด๋™ํ•˜๋ฉด ๋“œ๋ฌผ๊ฒŒ ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ์ข€ ๋” ์ผ๋ฐ˜์ ์ธ ๊ฒƒ์„ ํ•˜๋Š” ๊ฒƒ์ด ์‹ค์ œ๋กœ ๋‚˜์  ๊ฒƒ์€ ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๋œ. ์ฆ‰, ์ฒด๊ณ„์ ์œผ๋กœ ํ•˜๋ฉด ๋ฐฐ์šฐ๊ธฐ๊ฐ€ ํ›จ์”ฌ ์–ด๋ ค์›Œ ๋ณด์ด์ง€ ์•Š๊ณ , .. ์ธ์ง€ ... "๋” ๋งŽ์€ ์ˆ˜"๋ฅผ ์˜๋ฏธํ•˜๋Š”์ง€ ํ˜ผ๋™์ด ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ".

์ด๊ฒƒ์€ ๋Œ€๋žต ์šฐ๋ฆฌ๊ฐ€ ์—ผ๋‘์— ๋‘” ์ ‘๊ทผ ๋ฐฉ์‹๊ณผ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค.

์–ด๋Š ๊ฒƒ? ๋‚ด ๊ฒŒ์‹œ๋ฌผ์—์„œ ๋ช‡ ๊ฐ€์ง€ ๋Œ€์•ˆ์„ ์ œ์•ˆํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ข…์ข… ํฌ๊ด„์  ์ธ ๋ฒ”์œ„๋ฅผ ๋ฐ˜๋ณตํ•˜๊ณ  ์‹ถ์ง€ ์ •๋ง ์ž…๋ ฅ ์ข‹์•„ 0...x ๋Œ€์‹  0..(x + 1) . ๋‚˜๋Š” ์ด๊ฒƒ์ด ํ•˜๋‚˜์”ฉ ์˜ค๋ฅ˜๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•˜์ง€๋งŒ ์–ด๋–ค ๋Œ€์•ˆ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

Rust์˜ ๊ตฌ๋ฌธ์„ ๋ถ€์ž‘์šฉ ์—†์ด ์ž์œ ๋กญ๊ฒŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด ๋ช‡ ๊ฐ€์ง€ ๋ช…๋ฐฑํ•œ ํŒจํ„ด๋งŒ ๋ณด์ž…๋‹ˆ๋‹ค.

์žˆ๋Š” ๊ทธ๋Œ€๋กœ ๋ฐ›์•„๋“ค์ด๊ณ 

1..4 // 1, 2, 3
1...4 // 1, 2, 3, 4

์ด๋Š” ๊ดœ์ฐฎ์€ ์†”๋ฃจ์…˜ IMHO์ด๋ฉฐ ํŒจํ„ด ์ผ์น˜์—๋„ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ˆ˜ํ•™์—์„œ ๋นŒ๋ฆฌ๋‹ค

[1, 4] // 1, 2, 3, 4
[1, 4[ // 1, 2, 3
]1, 4] // 2, 3, 4
]1, 4[ // 2, 3

์ด๊ฒƒ์€ ๊ฐ€์žฅ ์™„์ „ํ•œ ๊ตฌ๋ฌธ์ด์ง€๋งŒ ๊ฐ™์€ ์–‘์˜ ์—ฌ๋Š” ์ค‘๊ด„ํ˜ธ ๊ทœ์น™์„ ๊นจ๊ณ  ์‹œ๊ฐ์ ์œผ๋กœ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๊ธฐ ๋” ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

ํŒŒ์ด์ฌ์—์„œ ์ฐจ์šฉ

1:1:=5 // 1, 2, 3, 4, 5
1:1:<5 // 1, 2, 3, 4

์ด๋Š” ์•Œ๋ ค์ง„ ํŒจํ„ด์ด๋ฉฐ ๊ณ„๋‹จ ํฌ๊ธฐ๋ฅผ ํ†ตํ•ฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. RFC ํ”„๋กœ์„ธ์Šค๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ๋ชจ๋ฅด์ง€๋งŒ ๋ฒ”์œ„์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•  ๋•Œ ๋‹จ๊ณ„ ํฌ๊ธฐ๋„ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‹จ๊ณ„ ํฌ๊ธฐ๊ฐ€ ์ด ๋…ผ์˜์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ(๋˜๋Š” ๋ฏธ๋ž˜์˜ ๊ฒƒ) ..= ๋ฐ ..< ๊ฐ€ ๋งค์šฐ ํ•ฉ๋ฆฌ์ ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค!

์—…๋ฐ์ดํŠธ: ..= ๋ฐ ..< ๊ฐ€ ์ •๋ง ์ข‹์€ ์†”๋ฃจ์…˜์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‹จ๊ณ„ ํฌ๊ธฐ๋ฅผ ์–ด๋Œ‘ํ„ฐ๋กœ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ๋” ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค.

์ด ํ† ๋ก ์— ๋‚ด๋ฆผ์ฐจ์ˆœ ๋ฒ”์œ„๊ฐ€ ํฌํ•จ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ๋ฒ”์œ„๋ฅผ ๋ฐ˜์ „์‹œํ‚ค๋Š” ํ˜„์žฌ ์†”๋ฃจ์…˜์€ ๋งค์šฐ ํ˜ผ๋ž€์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค(๊ทธ๋Ÿฌ๋‚˜ ํฌ๊ด„์ ์ธ ๋ฒ”์œ„๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ๊ทธ๋ ‡์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Œ).

์˜ˆ๋ฅผ ๋“ค์–ด ๋ˆˆ์„ ๊ฐ€๋Š˜๊ฒŒ ๋œจ์ง€ ์•Š๊ณ ๋„ ์ด๊ฒƒ์„ ์ฝ๊ณ  ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

for i in (1..l.len()).rev() { ... }

ํŽธ์ง‘: ๊ทธ๋ฆฌ๊ณ  GitHub์˜ ๊ธ€๊ผด์„ ์‚ฌ์šฉํ•˜๋ฉด l ๊ฐ€ 1 ์ฒ˜๋Ÿผ ๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์— ํ›จ์”ฌ ๋” ํ˜ผ๋ž€์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

๋„ค๊ฑฐํ‹ฐ๋ธŒ ์Šคํ…์‚ฌ์ด์ฆˆ๋กœ ์ถฉ๋ถ„ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

Matlab ๊ตฌ๋ฌธ a:b ๋ฐ a:step:b ์žˆ์Šต๋‹ˆ๋‹ค.

2016๋…„ 11์›” 4์ผ 00์‹œ 50๋ถ„์— "Ott" [email protected]์ด ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

๋„ค๊ฑฐํ‹ฐ๋ธŒ ์Šคํ…์‚ฌ์ด์ฆˆ๋กœ ์ถฉ๋ถ„ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/rust-lang/rust/issues/28237#issuecomment -258344460,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AAC3n3kwnGH6POQb4dGwCwJ8yOGqPSBQks5q6rmDgaJpZM4F4LbW
.

@durka ๊ทธ๋ ‡๋‹ค๋ฉด a ๋˜๋Š” b ๊ฐ€ ์—†๋Š” ํ˜„์žฌ .. ์™€ ๋™๋“ฑํ•œ ๊ฒƒ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๊ทธ๋ƒฅ : ?

๋‚ด๊ฐ€ ๋ณด์ง€ ๋ชปํ•œ ๊ฒƒ์ด RFC์— ๊ธฐ๋ก๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ•„๋“œ์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ์ด๋ฆ„์ด ๊ณ ๋ ค๋˜์—ˆ์Šต๋‹ˆ๊นŒ?

๋‹ค๋ฅธ ์œ ํ˜•์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์˜๋ฏธ๊ฐ€ ๋‹ค๋ฅผ ๋•Œ ๋‹ค๋ฅธ ํ•„๋“œ ์ด๋ฆ„์„ ๊ฐ–๋Š” ๊ฒƒ์ด ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด "range.start"๋Š” ๋ชจ๋“  ์œ ํ˜•์—์„œ "ํ•˜ํ•œ ํฌํ•จ"์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ "range.end"๋Š” ๋•Œ๋กœ๋Š” ํฌ๊ด„์ ์ด๊ณ  ๋•Œ๋กœ๋Š” ๋ฐฐํƒ€์ ์ž…๋‹ˆ๋‹ค. "๋"๊ณผ (strawman) "๋งˆ์ง€๋ง‰"์˜ ๊ตฌ๋ณ„์€ ๊ทธ๊ฒƒ์„ ๋” ๋ช…ํ™•ํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

(๋ฌผ๋ก  Range๋ฅผ ์œ„ํ•ด ๋‹ค๋ฅธ ์œ ํ˜•์„ ํฌ๊ธฐํ•œ ๊ฒฝ์šฐ์—๋Š” ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค.>...)

ํฌ๊ด„์ ์ธ ๋ฒ”์œ„๋Š” ์—ฌ์ „ํžˆ std::collections::range::RangeArgument๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

pub trait RangeArgument<T> {
    fn start(&self) -> Option<&T> { ... }
    fn end(&self) -> Option<&T> { ... }
}

๊ทธ ๋‹ค์Œ์—

impl RangeArgument<T> for RangeToInclusive<T> {
   fn end(&self) {
     Some(self.end+1)
   }
}

๋”ฐ๋ผ์„œ fn foo<T, R: RangeArgument<T>>(arg: R) ๋Š” ํฌํ•จ ๋ฒ”์œ„ ๋˜๋Š” ๋ฐ˜๊ฐœ๋ฐฉ ๋ฒ”์œ„๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@durka a:b ๊ตฌ๋ฌธ์˜ ๋ฌธ์ œ๋Š” ์œ ํ˜• ascription์ด ๋ชจํ˜ธํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. b ๋ณ€์ˆ˜ ๋˜๋Š” b ์œ ํ˜•์„ ์š”๊ตฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ๋ถ„๋ช…ํžˆ ํ›Œ๋ฅญํ•œ Rust ํ”„๋กœ๊ทธ๋ž˜๋จธ๋กœ์„œ ์šฐ๋ฆฌ๋Š” ์œ ํ˜•์„ ๋Œ€๋ฌธ์ž๋กœ ํ‘œ์‹œํ•˜์ง€๋งŒ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ด๋ฅผ ์œ ์ถ”ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

.. ์ˆ˜ํ•™ ์ •์˜๊ฐ€ ์žˆ๋Š” ์—ฐ์‚ฐ์ž( @duesee ์ฃผ์„ ๊ธฐ๋ฐ˜):

[1..4] // 1, 2, 3, 4
[1..4[ // 1, 2, 3
]1..4] // 2, 3, 4
]1..4[ // 2, 3

์‚ฌ์šฉ( @0tt ์˜ˆ์ œ ๊ธฐ๋ฐ˜):

fn fizzbuzz_to(n: u32) {
    for n in [1..n + 1] {
        fizzbuzz(n);
    }
}

์ด ๊ฒฝ์šฐ .. ํžŒํŠธ๋กœ ์‚ฌ์šฉํ•˜์ง€๋งŒ ๊ฒฝ๊ณ„๋Š” [ ๋ฐ ]

@adelarsq : Rust์—์„œ๋Š” ์‹œ์ž‘์„ ํฌํ•จํ•˜์ง€ ์•Š๋Š” ๋ฒ”์œ„๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋Œ€๊ด„ํ˜ธ ๊ตฌ๋ฌธ์€ ํ—ˆ์šฉ๋˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋Œ€๊ด„ํ˜ธ ๊ตฌ๋ฌธ์ด ์ด๋ฏธ ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ..= ๊ฐ€ ํฌ๊ด„์ ์ธ ๋ฒ”์œ„๋ฅผ ์œ„ํ•œ ๊ฐ€์žฅ ํ•ฉ๋ฆฌ์ ์ธ ์„ ํƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
... ๊ฐ€ ์•„๋‹Œ .. ์™€ ์‹œ๊ฐ์ ์œผ๋กœ ์‰ฝ๊ฒŒ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž…๋ ฅ์˜ ๊ธฐํšŒ ... ์˜๋ฏธํ•˜๋Š” ๊ฒฝ์šฐ .. ํ•˜๊ฑฐ๋‚˜ ๊ทธ ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๊ณผ ๋ชฐ๋ž˜๋Š”๋ณด๋‹ค ๋†’์€ ..= .
(์‹œ๊ฐ์  ์ธ์ง€ ๊ฐ€๋Šฅ์„ฑ๊ณผ ๋ฒ„๊ทธ ๊ฐ€๋Šฅ์„ฑ ๋ชจ๋‘์—์„œ C์—์„œ if(a == b) ๋Œ€์‹  if(a = b) ๋ฅผ ์‹ค์ˆ˜๋กœ ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค).
๊ทธ๋ฆฌ๊ณ  ..= ๋Š” ๊ทธ ์˜๋ฏธ๋ฅผ ์ƒ์ง•ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์™ธ์šฐ๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค( i ..= j ๋Š” i .. j ๋ฒ”์œ„๋ฅผ ์˜๋ฏธํ•˜๊ณ  ์—ฌ๊ธฐ์„œ i = j ).

์ฃผ์š” ๋ถˆ๋งŒ์€ ... ๊ฐ€ .. ์™€ ๋„ˆ๋ฌด ์œ ์‚ฌํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋” ๋งŽ์€ ๋ฌธ์ž๋ฅผ ํฌํ•จํ•˜๋Š” ๋‹ค๋ฅธ ์ œ์•ˆ์ด ์žˆ์„ ๋•Œ ์•„๋ฌด๋„ ๋ฌธ์ž ์ˆ˜์— ๋Œ€ํ•ด ๋ถˆํ‰ํ•˜์ง€ ์•Š๊ณ  ๋Œ€๊ด„ํ˜ธ ์ผ์น˜ ๋ฐ ํŠน์ • ์žฅ์†Œ์—์„œ์˜ ์‚ฌ์šฉ๊ณผ ๊ฐ™์€ ๊ฒƒ์— ๋Œ€ํ•ด์„œ๋งŒ ๋ถˆํ‰ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค.
๊ทธ๋ ‡๋‹ค๋ฉด ํฌํ•จ ๋ฒ”์œ„์˜ ๊ฒฝ์šฐ .... ๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ๊ทธ๊ฒƒ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๋ฒ”์œ„์ฒ˜๋Ÿผ ๋ณด์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚ด๊ฐ€ ๋งํ–ˆ๋“ฏ์ด ์•„๋ฌด๋„ ์ถ”๊ฐ€ ๋ฌธ์ž๊ฐ€ ํ•„์š”ํ•œ ์†”๋ฃจ์…˜์„ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ..= ๋ณด๋‹ค ๋‹ค์†Œ ๋ถˆ์•ˆ์ •ํ•œ์ง€ ์—ฌ๋ถ€๋Š” ๋…ผ์Ÿ์˜ ์—ฌ์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
for i in 0....10 { println!("just a thought"); }

๊ธฐ๋ณธ ๋™์ž‘์ด ํฌํ•จ๋œ ๊ฒฝ์šฐ ..! ์—ฐ์‚ฐ์ž๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค(๊ฑฐ์˜ ๋ถ€์ •์œผ๋กœ).

.... ์˜ ๋ฌธ์ œ๋Š” ... ์‹ค์ œ๋กœ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ ์•ฝ๊ฐ„์˜ ํ˜ผ๋ž€์ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ... ์ข‹์•„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด Ruby ์™€ ์ •ํ™•ํžˆ ๋ฐ˜๋Œ€์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ง€๊ธˆ๊นŒ์ง€ ๊ฐ€์žฅ ์ข‹์€ ์˜ต์…˜์€ ..= ์ž…๋‹ˆ๋‹ค.

@adelarsq๋Š” .... ์šด์˜์ž๋Š” ๋Œ€์ฒด ํ•  ๊ฒƒ์ด๋‹ค ... ๋‹น์‹ ์ดํ•˜๋ ค๊ณ ํ•˜๋ฉด ๊ทธ๋ž˜์„œ, ์—ฐ์‚ฐ์ž๋ฅผ .. ํ•˜๊ณ  ๋ณ„๋„์˜ ์ถ”๊ฐ€ . , ๊ทธ๊ฒƒ์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค ์ปดํŒŒ์ผ์„ ์‹œ๊ฐ„ ์˜ค๋ฅ˜, .... ๋ฅผ ์‹œ๋„ํ•˜๊ณ  ์ ์„ ์žŠ์–ด๋ฒ„๋ฆฌ๋ฉด ๊ทธ๊ฒƒ๋„ ์˜ค๋ฅ˜๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

ํŒจํ„ด ์ผ์น˜์—์„œ ... ๋Š” ํฌํ•จ ๋ฒ”์œ„์™€ ์ผ์น˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฏ€๋กœ ํฌํ•จ ๋ฒ”์œ„ ํ‘œํ˜„์—๋„ ... ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
๋‹จ๊ณ„๊ฐ€ ์žˆ๋Š” ๋ฒ”์œ„์˜ ๊ฒฝ์šฐ Haskell ๊ตฌ๋ฌธ์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: 1,3..9 => [1,3,5,7]).

์Šคํ…/๋ฆฌ๋ฒ„์Šค ๋“ฑ์˜ ๋ฒ”์œ„์˜ ๊ฒฝ์šฐ ๋ณต์žกํ•œ ๋ฆฌํ„ฐ๋Ÿด ๋Œ€์‹  ์ข‹์€ ๊ตฌ์‹ ํ•จ์ˆ˜(์ผ์ข…์˜ Range ์ƒ์„ฑ์ž)๋ฅผ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.

์ฟผ๋“œ ๋„ํŠธ .... ๋„ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค( ..= ๋„ IMHO ๊ดœ์ฐฎ์Œ). ์ผ๊ด€์„ฑ์„ ์œ„ํ•ด ํŒจํ„ด ์ผ์น˜์—์„œ๋„ ํ—ˆ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๊ฒฐ๊ตญ ํŒจํ„ด์—์„œ ... ๊ฐ€ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Œ).

๋‚˜์—๊ฒŒ ..= ๋Š” .... ์—†๋Š” ์‹œ๊ฐ์  ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.

๋ฐฉ๊ธˆ ๋ญ”๊ฐ€๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

์ˆ˜ํ•™์—์„œ โˆ€ i: 0 โ‰ค i < 10 ์“ฐ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฒˆ์—ญ๋ฉ๋‹ˆ๋‹ค.

for i in 0 ..< 10 { }

์ด๊ฒƒ์€ ์ผ๊ด€์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ โˆ€ i: 0 โ‰ค i โ‰ค 10 ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฒˆ์—ญ๋ฉ๋‹ˆ๋‹ค.

for i in 0 ..= 10 { }

์—ฌ๊ธฐ์„œ โ‰ค์€ =๋กœ ๋ฒˆ์—ญ๋˜์–ด ์ผ๊ด€์„ฑ์ด ์—†์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์ž์ „๊ฑฐ ์„ธ์ฐจ์žฅ์ผ ์ˆ˜ ์žˆ์ง€๋งŒ,

for x in 0 ..<= 10 { }

๋” ๋งž๋Š” ๋Š๋‚Œ. ์ด๊ฒƒ์€ ๋‚ด C ๋ฐฐ๊ฒฝ ๋•Œ๋ฌธ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

for (unsigned int i = 0; i <= 10; ++i) { }

" i ๊ฐ€ 10 ๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด ๋ฌด์–ธ๊ฐ€๋ฅผ ํ•˜์‹ญ์‹œ์˜ค"๋กœ ํ•ด์„๋ฉ๋‹ˆ๋‹ค. CI์—์„œ๋Š” ๋ฃจํ”„ ์กฐ๊ฑด์—์„œ == ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค. ๊ฐ’์„ ๋›ฐ์–ด ๋„˜๊ณ  ๋ฌดํ•œ ๋ฃจํ”„๋กœ ๋๋‚  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ Rust์—์„œ๋Š” ์ผ์–ด๋‚  ์ˆ˜ ์—†๋Š” ์ผ์ด์ง€๋งŒ for i in 1 ..= 10 ๋ฅผ C๋กœ ๋ฒˆ์—ญํ•˜๋ฉด ์ •ํ™•ํžˆ ๊ทธ๊ฒƒ์„ ์•”์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋” ๋‚˜์•„๊ฐ€์„œ,

for i in 0 <..<= 10 { }

์ž๋ช…ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํŽธ์ง‘: ์—ฌ๊ธฐ์— = ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ํ˜ผ๋ž€์Šค๋Ÿฌ์šธ ์ˆ˜ ์žˆ๋Š”์ง€ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•œ ๋‚˜์œ ์—ญ ์˜ˆ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฑด์„ค์ ์ธ ๊ฒƒ๋ณด๋‹ค ๋” ํ˜ผ๋ž€์Šค๋Ÿฌ์›Œ์„œ ์‚ญ์ œํ–ˆ์Šต๋‹ˆ๋‹ค.

@duesee >=..> ๋Š” ์–ด๋–ป๊ฒŒ ์ž๋ช…ํ•ฉ๋‹ˆ๊นŒ? <=..> (<= 10 and > 0) ์ด์–ด์•ผ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?
IMO๋Š” ์„ค๋ช…์ด ํ•„์š” ์—†์œผ๋ฉฐ ์šด์˜์ž๋กœ์„œ ๋„ˆ๋ฌด ๊ธธ๊ณ  ๋น„๋ฐ€์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.
(์—ฐ์‚ฐ์ž๋Š” IMO 3์ž ์ด์ƒ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค).
Btw, ์šฐ๋ฆฌ๋Š” ์ด๋ฏธ ์—ญ๋ฐ˜๋ณต ๋ฐฉํ–ฅ์„ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค: .rev()
ํฌ๊ด„์ ์ธ ๋ฒ”์œ„์™€ .step_by() ๋Œ€ํ•œ ์—ฐ์‚ฐ์ž๋งŒ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
๋‹จ๊ณ„์˜ ๊ฒฝ์šฐ ๊ตฌ๋ฌธ์€ a .. b | s ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(ํฌํ•จ ๋ฒ”์œ„์˜ ๊ฒฝ์šฐ: a ..= b | s ).

@norru : for i in (1..l.len()).rev() { ... } ์˜ˆ์ œ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์Šฌ๋ผ์ด์Šค( for x in arr[1..].rev() { ... } )๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๋งค์šฐ ๋น„ํ˜„์‹ค์ ์ด์ง€๋งŒ ์ธ๋ฑ์Šค ์Šคํƒ€์ผ์˜ ๋ฐ˜๋ณต์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋„(๊ธฐ๋ณธ์ ์œผ๋กœ๋งŒ i ์—†๋Š” ๋ฐฐ์—ด ์š”์†Œ๋ฅผ ์ˆ˜์ •ํ•  ๋•Œ ์ฝ๊ธฐ๊ฐ€ ์ „ํ˜€ ์–ด๋ ต์ง€ ์•Š์Šต๋‹ˆ๋‹ค. (๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ธ์ˆ˜๊ฐ€ ๋ฆฌํ„ฐ๋Ÿด ์ˆซ์ž๊ฐ€ ์•„๋‹ ๋•Œ .. ์ฃผ์œ„์— ๊ณต๋ฐฑ์„ ๋‘ก๋‹ˆ๋‹ค: (1 .. arr.len()).rev() )

Rust ์—ฐ์‚ฐ์ž์—์„œ ๋ฌผ๊ณ ๊ธฐ์˜ >=..> ๋” ๋งŽ์€ ์ข…!

๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ์ข‹์•„ํ•œ๋‹ค ..<= ๋งŽ์€ (ํŽธ์ง‘ : ์œผ์Œ,๋ฅผ ์ œ์™ธํ•˜๊ณ  match ๊ฐ€ ๋ณด์ด๋Š” ๊ณณ <= 0 => :()

  • ์ผ๋ฐ˜ .. ์™€ ๋งค์šฐ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.
  • ..= ์˜ += ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
  • Swift์˜ ..< ์™€๋„ ๋…ผ๋ฆฌ์ ์œผ๋กœ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค. ๋‘ ์–ธ์–ด๊ฐ€ ์ˆ˜๋ ดํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค!
  • ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์ƒ์œ„ ์ˆซ์ž๋ณด๋‹ค ์ž‘ ๊ฑฐ๋‚˜ ๊ฐ™์€ ๋ฒ”์œ„์—์„œ ์ˆซ์ž๋ฅผ ์–ป๋Š”๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.

@pornel : >=..> more species of fish in Rust operators! ํ—คํ—ค :-)

@Boscop : ์ˆ˜ํ•™์˜ ์ •์˜์ฒ˜๋Ÿผ ์ฝ์œผ๋ฉด ์ž๋ช…ํ•ฉ๋‹ˆ๋‹ค. 10 >= i > 2 . ๋‚˜๋จธ์ง€ ๋‹ต๋ณ€: ์ „์ ์œผ๋กœ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ๋ถ€๋ถ„์€ ํ–ฅํ›„ ํ™•์žฅ์„ ์œ„ํ•ด ์ฐจ๋‹จ๊ธฐ๋ฅผ ๋„์ž…ํ•˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด ..= ๋Œ€ ..<= ๋ฅผ ์žฌ๊ณ ํ•˜๋„๋ก ๋™๊ธฐ๋ฅผ ๋ถ€์—ฌํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ์— ๋”ฐ๋ผ ๋‹ต๋ณ€์„ ์ˆ˜์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

.. ํ‘œ๊ธฐ๋ฒ•์— ๋Œ€ํ•œ ๊ฒฝ๊ณ  ๋˜๋Š” ์˜ค๋ฅ˜ ํ”Œ๋ž˜๊ทธ๋ฅผ ์–ป์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

.. ๊ฐ€ ๋‚ด ์ฝ”๋“œ๋ฒ ์ด์Šค์˜ ์–ด๋””์—๋„ ํ‘œ์‹œ๋˜๋Š” ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

..= ์— ๋˜ ํ•œ ํ‘œ๋ฅผ ๋˜์ง€๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

..< ๋ฐ ..<= ์˜ ๋‹จ์ ์€ ์ด๋ฏธ ์œ ํšจํ•œ ์ฝ”๋“œ๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(๋‹ค๋ฅธ ๊ฐ’๊ณผ ๋น„๊ต๋˜๋Š” ์˜ค๋ฅธ์ชฝ ์—ด๋ฆฐ ๋ฐฐํƒ€์  ๋ฒ”์œ„).

@thepowersgang

..< ๋ฐ ..<=์˜ ๋‹จ์ ์€ ์ด๋ฏธ ์œ ํšจํ•œ ์ฝ”๋“œ๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(์˜ค๋ฅธ์ชฝ์œผ๋กœ ์—ด๋ฆฐ ๋ฐฐํƒ€์  ๋ฒ”์œ„๊ฐ€ ๋‹ค๋ฅธ ๊ฐ’๊ณผ ๋น„๊ต๋จ).

์‚ฌ์‹ค์ด์ง€๋งŒ ์ด๊ฒƒ์ด ์‹ค์ œ๋กœ ๋ฌธ์ œ๊ฐ€ ๋  ๊ฐ€๋Šฅ์„ฑ์€ ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์—ฌ๊ธฐ์˜ ๋‹ค๋ฅธ ์ œ์•ˆ๋ณด๋‹ค ... ๋ฅผ ๋งค์šฐ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋Œ€์ฒด ๊ตฌ๋ฌธ์„ ์„ ํƒํ•ด์•ผ ํ•œ๋‹ค๋ฉด ..= ๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@nikomatsakis

์ €๋Š” ..< ๋ฐ ..<= ์˜ต์…˜์ด ์–ธ์–ด ๋ฌธ๋ฒ•์˜ ์ง๊ด€์ ์ธ ๋ชจ๋ธ์„ ํš๋“ํ•˜๋Š” ๊ณผ์ •์„ ์ง€๋‚˜์น˜๊ฒŒ ๋ณต์žกํ•˜๊ฒŒ ๋งŒ๋“ ๋‹ค๋Š” ์ด์œ ๋กœ ์ˆœ์ „ํžˆ ๋ฐ˜๋Œ€ํ•ฉ๋‹ˆ๋‹ค.

์ข€ ๋” ๊ฐœ์ธ์ ์ธ ๋ฉ”๋ชจ์—์„œ, ๋‚˜๋Š” ๊ทธ๊ฒƒ๋“ค์ด ์ ์–ด๋„ ํ„ฐ๋ณดํ”ผ์‰ฌ๋งŒํผ ์ถ”ํ•˜๊ณ  ์šฐ์•„ํ•˜์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ํ•จ๊ป˜ ๊ฐ€๊ณ  ์‹ถ์–ด์š” .. ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ๋…์  ๋ฐ ..= ํฌํ•จ์— ๋Œ€ํ•œ ๊ฐ™์€ ์‹œ๊ฐ์  ์šฐ์•„ํ•จ ์‚ฌ์ด์˜ ์ตœ์ ์˜ ๊ท ํ˜•, ์ง๊ด€์ ์œผ๋กœ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒํ•˜๊ณ , ํ˜ผ๋ž€์Šค๋Ÿฝ๊ฒŒ ๋‘ ์–ด๋ ต๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฌธ๋ฒ• ๊ทœ์น™.

... ์ •๋ง .. ๊ตฌ๋ณ„๋˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ๋‚ด๊ฐ€ ์™œ ๊ทธ๋ ‡๊ฒŒ ์ข‹์•„?

@tshepang

๋‚˜๋Š” ... ๊ฐ€ ๋ฏธํ•™์ ์œผ๋กœ ๋งค๋ ฅ์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ข‹์•„ํ•˜์ง€๋งŒ if (x == 2) { ์•„๋‹Œ if (x = 2) { ๋ฅผ ์“ฐ๋Š” ๊ฒƒ๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ๋ˆˆ์— ๋„์ง€ ์•Š๋Š” ๋ฒ„๊ทธ๋ฅผ ์ผ์œผํ‚ฌ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค๊ณ  ์šฐ๋ คํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜๋Œ€ํ•ฉ๋‹ˆ๋‹ค. C/C++์˜ if (x == 2) { . (๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ์œ„ํ—˜ํ•œ ๊ฒƒ์œผ๋กœ ํŒ๋ช…๋˜์—ˆ๋Š”์ง€๋Š” ์ž˜ ํ™•๋ฆฝ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.)

@ssokolow

Linting ๋˜๋Š” ์˜ต์…˜ ํ”Œ๋ž˜๊ทธ๋กœ ๋” ์ž˜ ํ•ด๊ฒฐ๋˜๋Š” IMO์ž…๋‹ˆ๋‹ค. ๋‹จ์ผ ํŒŒ์ผ/ํ”„๋กœ์ ํŠธ์—์„œ ํ‘œ๊ธฐ๋ฒ•์„ ํ˜ผํ•ฉํ•˜๋Š” ๋ฐ ๋งŽ์ด ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ๋‹ค๋ฅธ ์˜ต์…˜๋ณด๋‹ค .... ๋ฅผ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค. ๋„ˆ๋น„/๊ฐ„๊ฒฉ์„ ๋‘ ๋ฐฐ๋กœ ๋Š˜๋ฆฌ๋ฉด ํŠนํžˆ ์–‘์ชฝ์— ๊ธฐํ˜ธ๊ฐ€ ๋‚˜๋ž€ํžˆ ๋ฐฐ์น˜๋˜์–ด ์Œ์˜ ๊ณต๊ฐ„์„ ๊ฒฉ๋ฆฌ๋œ ๊ฒƒ๋ณด๋‹ค ๋” ๋šœ๋ ทํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ๊ณ ๋ คํ•  ๋•Œ ์ถฉ๋ถ„ํžˆ ๋ช…ํ™•ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@ssokolow

์‹œ๊ฐ์  ์šฐ์•„ํ•จ, ์ง๊ด€์ ์œผ๋กœ ํŒŒ์•…ํ•˜๊ธฐ ์‰ฌ์šด ๋ฌธ๋ฒ• ๊ทœ์น™, ๊ทธ๋ฆฌ๊ณ  ๋‘ ๊ฐ€์ง€๋ฅผ ํ˜ผ๋™ํ•˜๊ธฐ ์–ด๋ ต๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ ์‚ฌ์ด์˜ ์ตœ์ƒ์˜ ๊ท ํ˜•์„ ์œ„ํ•ด ..๋ฅผ ์˜ค๋ฅธ์ชฝ ๋ฐฐํƒ€์ ์œผ๋กœ, ..=๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์š” ๋ฌธ์ œ๋Š” ๋‹ค๋ฅธ ๊ฒฝ์šฐ(์˜ˆ: <..<= )์— ๋Œ€ํ•œ ๊ตฌ๋ฌธ ๋„ ์›ํ•˜๋Š”์ง€ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ .. ๋ฐ ..= ์ผ€์ด์Šค์˜ 99.5%๋ฅผ ์ปค๋ฒ„ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” ์ฃผ์š” ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ drain ์™€ ๊ฐ™์€ API๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉฐ ํ˜„์žฌ ๊ฑฐ๊ธฐ ์—์„œ

cc @rust-lang/libs

์šฐ๋ฆฌ๋Š” ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฒ”์œ„๋ฅผ ์ง์ ‘ ๊ตฌ์„ฑํ•˜๋Š” ๋“œ๋ฌธ ๊ฒฝ์šฐ๋ฅผ ๋‚จ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ตฌ์กฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด.

2017๋…„ 2์›” 22์ผ ์ˆ˜์š”์ผ ์˜คํ›„ 4์‹œ 50๋ถ„, Niko Matsakis [email protected]
์ผ๋‹ค:

@ssokolow https://github.com/ssokolow

๋‚˜๋Š” .. ์˜ค๋ฅธ์ชฝ ๋ฐฐํƒ€์  ๋ฐ ..= ์ตœ๊ณ ๋กœ ํฌ๊ด„์ ์œผ๋กœ ๊ฐˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค
์‹œ๊ฐ์  ์šฐ์•„ํ•จ๊ณผ ์ง๊ด€์ ์œผ๋กœ ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ๋ฌธ๋ฒ• ๊ทœ์น™ ์‚ฌ์ด์˜ ๊ท ํ˜•
ํŒŒ์•…ํ•˜์—ฌ ๋‘ ๊ฐ€์ง€๋ฅผ ํ˜ผ๋™ํ•˜๊ธฐ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์š” ๋‚œ์ œ๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋˜ํ•œํ• ์ง€ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค
๋‹ค๋ฅธ ๊ฒฝ์šฐ์˜ ๊ตฌ๋ฌธ(์˜ˆ: <..<=). ๋‚˜๋Š” ๊ฐœ์ธ์ ์œผ๋กœ .. ๊ทธ๋ฆฌ๊ณ  ..=
99.5%์˜ ๊ฒฝ์šฐ๋ฅผ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ์ฃผ์š” ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ๋“œ๋ ˆ์ธ๊ณผ ๊ฐ™์€ API๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
์šฐ๋ฆฌ๋Š” ํ˜„์žฌ ๊ฑฐ๊ธฐ์—์„œ ๋…ํŠนํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ฑ„ํƒํ–ˆ์Šต๋‹ˆ๋‹ค
https://doc.rust-lang.org/std/collections/struct.BTreeMap.html#method.range
.

์ฐธ์กฐ @rust-lang/libs https://github.com/orgs/rust-lang/teams/libs

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/rust-lang/rust/issues/28237#issuecomment-281815665 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AAC3n-aKwYKFq4VI9RizL0GkzXXSjTPwks5rfK2ngaJpZM4F4LbW
.

..= ํŒจํ„ด์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ธฐ์กด ... ๊ตฌ๋ฌธ์€ ์–ด๋–ป๊ฒŒ ๋ฉ๋‹ˆ๊นŒ?

๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์˜ ์กด์žฌ๋Š”
์ตœ์†Œํ•œ ์†๊ธฐ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

2017๋…„ 2์›” 22์ผ ์ˆ˜์š”์ผ ์˜คํ›„ 6์‹œ 2๋ถ„์— andrewtj [email protected]์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

I take it ..= ํŒจํ„ด์œผ๋กœ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ• ๊นŒ์š”? ๋ฌด์—‡์ด ๋  ๊ฒƒ์ธ๊ฐ€
๊ธฐ์กด ... ๊ตฌ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/rust-lang/rust/issues/28237#issuecomment-281834007 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AAC3nw_DaOMNxuIKw6ZFfXJW95QyijY4ks5rfL6DgaJpZM4F4LbW
.

@durka @andrewtj ์šฐ๋ฆฌ๊ฐ€ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

..= ๋Š” += ์™€ ๊ฐ™์€ ์˜๋ฏธ๋กœ ์—ฐ์‚ฐ์ž๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
~ , 0~9 , 'A'~'Z' ์กฐ์ˆ˜ ~ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

..= ๋Š” ์–ด๋–ค ์ž‘์—…์— ํ•ด๋‹นํ•ฉ๋‹ˆ๊นŒ? - ๋Š” ๋ถ„๋ช…ํžˆ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
1-9 == -8 .

2017๋…„ 2์›” 22์ผ ์ˆ˜์š”์ผ ์˜คํ›„ 8:04, Junfeng Liu ์•Œ๋ฆผ @github.com
์ผ๋‹ค:

..=๋Š” +=์™€ ๊ฐ™์€ ์˜๋ฏธ๋กœ ์—ฐ์‚ฐ์ž๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
~๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค(์˜ˆ: 0~9, 'A'~'Z').

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/rust-lang/rust/issues/28237#issuecomment-281856846 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AAC3n7N2dM4DAzc_uc5JdHit4IJgyvYGks5rfNsPgaJpZM4F4LbW
.

@durka ..= ๋Š” ํ• ๋‹น ์—ฐ์‚ฐ์ž์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ๋“œ๋ฌผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ~ ์€(๋Š”) ์ž ๋ณตํ•˜์ง€ ์•Š๋Š” ์กฐ์ˆ˜์ž…๋‹ˆ๋‹ค. ... ์‚ฌ์šฉํ•ด๋„ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

impl Fill for Range<String> {
   fn fill() -> String { ... }
}
impl FillAsign for RangeAssign<String> {
   fn fill(&mut self) { ... }
}
(String::new("abc") .. String::new("f")).fill()  // "abcdef"
(String::new("abc") ..= String::new("f")).fill()  //  ()

์•„ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์ œ ๊ธ€๊ผด์—์„œ ๋™์ผํ•˜๊ฒŒ ๋ณด์ž…๋‹ˆ๋‹ค. ..=๊ฐ€ ํ™”ํ•ฉ๋ฌผ์ธ์ง€ ๋ฌป๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
+=์™€ ๊ฐ™์€ ํ• ๋‹น ์—ฐ์‚ฐ์ž๋Š” ์–ด๋–ค ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๊นŒ(ํ•ด๋‹น
+๋กœ)?

2017๋…„ 2์›” 22์ผ ์ˆ˜์š”์ผ ์˜คํ›„ 8:29, Junfeng Liu ์•Œ๋ฆผ @github.com
์ผ๋‹ค:

@durka https://github.com/durka ..= ๊ทธ๋ƒฅ ํ• ๋‹น์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค
์—ฐ์‚ฐ์ž์˜ ๊ฒฝ์šฐ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ๋“œ๋ฌผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ~๋Š” ์กฐ์ˆ˜๊ฐ€ ์•„๋‹Œ ์กฐ์ˆ˜์ž…๋‹ˆ๋‹ค.

๋ฒ”์œ„์— ๋Œ€ํ•œ impl ์ฑ„์šฐ๊ธฐ{
fn ์ฑ„์šฐ๊ธฐ() -> ๋ฌธ์ž์—ด { ... }
}
RangeAssign์— ๋Œ€ํ•œ impl FillAsign{
fn ์ฑ„์šฐ๊ธฐ(&mut self) { ... }
}
(String::new("abc") .. String::new("f")).fill() // "abcdef"
(๋ฌธ์ž์—ด::new("abc") ..= ๋ฌธ์ž์—ด::new("f")).fill() // ()

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/rust-lang/rust/issues/28237#issuecomment-281861478 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AAC3n39uqbADB1rNtBh3PBTRY2XBXOUNks5rfOD-gaJpZM4F4LbW
.

@durka @nikomatsakis ์ข‹์•„, ๊ธ€์Ž„, ๋‚˜๋Š” ์ด๊ฒƒ์ด ๊ณง ํ•ด๊ฒฐ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž€๋‹ค. ํ˜„์žฌ ์ƒํ™ฉ์€ ์–ด์ƒ‰ํ•˜๊ณ  ๊ตฌ๋ฌธ ๋ณ€๊ฒฝ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

@pornel ๋น„๋‚œํ•˜๋Š” ... ์—์„œ match ๊ทธ๊ฒƒ์ด ์ข‹์€ ํ•ด๊ฒฐ์ฑ…์ด๋˜์ง€ ์•Š๋„๋ก, ํ˜ธํ™˜์„ฑ์„ ๊นฐ ๊ฒƒ์ด๋‹ค. ๋‚˜๋Š” ์—ฌ์ „ํžˆ ... ๊ฐ€์žฅ ์ ์ ˆํ•œ ๊ฒƒ์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค(๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ Ruby์˜ ์ •๋ฐ˜๋Œ€์ด์ง€๋งŒ Rubyists๋Š” ์œ ์‚ฌํ•œ ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค).

@hyst329 ํ•˜์ง€๋งŒ ... ๋Š” ์˜ค๋ฅ˜์— ๋” ์ทจ์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. . ๋ฅผ ๋ˆ„๋ฝํ•˜๊ฑฐ๋‚˜ ์ถ”๊ฐ€ํ•˜๋ฉด ์ƒˆ๋กœ์šด ์˜๋ฏธ๊ฐ€ ์ƒ๊ธฐ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋น„์ถ”์ฒœ์€ ๋ฌผ๊ฑด์„ ๋ง๊ฐ€๋œจ๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด์ „ ๊ตฌ๋ฌธ์€ ๊ธฐ์กด ํ”„๋กœ๊ทธ๋žจ์— ๋Œ€ํ•ด ์˜๊ตฌ์ ์œผ๋กœ ์ง€์›๋˜์–ด์•ผ ํ•˜์ง€๋งŒ ์‚ฌ์šฉ์ž๋Š” ๋ฌธ์„œ ๋ฐ rustfmt๋ฅผ ํ†ตํ•ด ์ƒˆ ๊ตฌ๋ฌธ์œผ๋กœ ๋ฐฉํ–ฅ์„ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์‚ฌ์šฉ์ž๋Š” ๋ฌธ์„œ ๋ฐ rustfmt๋ฅผ ํ†ตํ•ด ์ƒˆ๋กœ์šด ๊ตฌ๋ฌธ์œผ๋กœ ๋ฐฉํ–ฅ์„ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์œ„ํ•ด Rustfmt๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋ง ๊ฒƒ์„ ๊ฐ•๋ ฅํžˆ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. "์ž๋™์œผ๋กœ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์ ์šฉ" ๋ชจ๋“œ์—์„œ ์‚ฌ์šฉํ•  ๋•Œ ... ์˜ ์ด์•Œ ๊ฐ™์€ ํ’ˆ์งˆ์„ ์•…ํ™”์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜คํƒ€๋ฅผ ํ›จ์”ฌ ๋” ๋ชฉ์ ์ด ์žˆ์–ด ๋ณด์ด๋Š” ๊ฒƒ์œผ๋กœ ์ž๋™์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. (๋”ฐ๋ผ์„œ ๋‚˜์ค‘์— ๊ฒ€์‚ฌํ•  ๋•Œ ๊ฐ„๊ณผํ•˜๊ธฐ ์‰ฝ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.)

์ž๋™ ๊ณ ์น  ์ˆ˜ ์—†๋Š” "์˜๋ฏธํ•œ ๋‚ด์šฉ์„ ํ™•์ธํ•˜๊ณ  .. ๋˜๋Š” ..= ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค"๋ผ๋Š” ์˜๋ฏธ์˜ ์ปดํŒŒ์ผ๋Ÿฌ ๊ฒฝ๊ณ ๋Š” ์ธ์  ์˜ค๋ฅ˜์˜ ๊ฐ€๋Šฅ์„ฑ.

๋‚˜๋Š” ๋ฐœ์ด์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ธฐ์กด ... ํŒจํ„ด์˜ ๋งฅ๋ฝ์—์„œ ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์Œ์„ ์œ ์˜ํ•˜์‹ญ์‹œ์˜ค. ํ˜„์žฌ Rust๋Š” ํŒจํ„ด์ด ... ๋งŒ ํ—ˆ์šฉํ•˜๊ณ  ํ‘œํ˜„์‹์ด .. ๋งŒ ํ—ˆ์šฉํ•˜๋Š” ์ž„์‹œ ๋ฐœ์ด ์—†๋Š” ์ƒํ™ฉ์— ์žˆ์œผ๋ฏ€๋กœ ๋‘˜ ๋‹ค ์˜คํƒ€๋กœ๋ถ€ํ„ฐ ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค.

๋ฌผ๋ก  ํ‘œํ˜„์‹์˜ ... ๋ฅผ ..= ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์€ ์ถ”์ฒœํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹น์—ฐํžˆ ์˜คํƒ€๊ฐ€ ์˜๊ตฌ์ ์ผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์•„. ๋‚˜๋Š” ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์žŠ๊ณ  ์žˆ์—ˆ๋‹ค. ์ƒ๊ธฐ์‹œ์ผœ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

@adelarsq ์‹ค์ œ๋กœ 'a'..'z' ๋˜๋Š” 128u8..255u8 ์™€ ๊ฐ™์€ ์ผ๋ฐ˜์ ์ธ ์˜ค๋ฅ˜๋Š” ๊ฒฝ๊ณ ๋กœ cargo-clippy ์‰ฝ๊ฒŒ ํ†ตํ•ฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋˜ํ•œ .. ์™€ ... ์˜ ๋„ˆ๋น„๋Š” ๋ถ„๋ช…ํžˆ ๋‹ค๋ฆ…๋‹ˆ๋‹ค (๋ฌผ๋ก  ๊ณ ์ • ํญ ๊ธ€๊ผด์„ ์‚ฌ์šฉํ•  ๋•Œ; ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์€ ์ผ๋ฐ˜์ ์œผ๋กœ Rust๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ผ๋ฐ˜์ ์œผ๋กœ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ๋‚˜์œ ์ƒ๊ฐ์ž…๋‹ˆ๋‹ค) .

... ๋Œ€์‹  โ€ฆ (์œ ๋‹ˆ์ฝ”๋“œ ์ˆ˜ํ‰ ํƒ€์›) ๊ตฌ๋ฌธ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด ์ตœ์†Œํ•œ ์•„๋ฌด๋„ ์‹ค์ˆ˜๋กœ ์ž…๋ ฅํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํŽธ์ง‘: ์˜ค ์•„๋ฌด๋„ ์ด ์ œ์•ˆ์„ ์ง„์ง€ํ•˜๊ฒŒ ๋‹ค๋ฃจ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค :cry: ์†Œ์Œ์— ๋Œ€ํ•ด ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ Google ๋ฌธ์„œ๋„๊ตฌ๊ฐ€ ์ž๋™์œผ๋กœ ์ค„์ž„ํ‘œ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ํ…์ŠคํŠธ ํŽธ์ง‘ ์—…๊ณ„์˜ ์ฃผ์š” ํ”Œ๋ ˆ์ด์–ด.

๋˜ํ•œ, ๋ชจ๋“  ์‚ฌ๋žŒ์ด ํŽธ๋ฆฌํ•˜๊ฒŒ ์ž‘์„ฑ ์ž…๋ ฅ์„์œ„ํ•œ ์ž‘์„ฑ ํ‚ค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. . ๊ทธ๋“ค์ด ์›ํ•˜๋Š” ์•Š๋Š” ๊ฒฝ์šฐ โ€ฆ

Windows์—์„œ๋Š” ์ˆซ์ž ํ‚คํŒจ๋“œ์™€ ํ•จ๊ป˜ Alt + 0133 ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ค„์ž„ํ‘œ๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! โ€ฆ

๊ทธ๋ฆฌ๊ณ  ์œ ์‚ฌํ•œ ์ฝ”๋“œํฌ์ธํŠธ ๊ธฐ๋ฐ˜ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด X11 ๊ธฐ๋ฐ˜ ๋ฐ์Šคํฌํƒ‘์˜ ๋‹ค์–‘ํ•œ ์Šคํƒ ๋ ˆ์ด์–ด์— ์กด์žฌํ•˜์ง€๋งŒ(๋‚˜๋Š” GTK+์™€ X11 ์ž…๋ ฅ ์Šคํƒ์ด ์ž์ฒด ๋…๋ฆฝ ์†”๋ฃจ์…˜์„ ๊ฐ€์ง€๊ณ  ์žˆ์Œ์„ ๊ธฐ์–ตํ•ฉ๋‹ˆ๋‹ค) ์ฝ”๋“œํฌ์ธํŠธ๋ฅผ ์ˆซ์ž๋กœ ๊ธฐ์–ตํ•˜๋Š” ๊ฒƒ์€ ํฐ ๋ฒˆ๊ฑฐ๋กœ์›€์ž…๋‹ˆ๋‹ค.

Compose ๋Š” ์ง๊ด€์ ์ธ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๊ธฐ์–ตํ•˜๋Š” ์œ ์ผํ•œ Windows Alt ์‹œํ€€์Šค๋Š” ์–ด๋ ธ์„ ๋•Œ ๋งŒ๋“  ๋ชจ๋“  DOS ๋ฐฐ์น˜ ํŒŒ์ผ ๋ฉ”๋‰ด์˜ Alt + 219 ์ž…๋‹ˆ๋‹ค.

ํ˜„์žฌ ๊ตฌ๋ฌธ์€ ์ด๋ฏธ ์˜ค๋ž˜ ์ „๋ถ€ํ„ฐ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฏธ ์•ˆ์ •ํ™”ํ•˜๊ณ  ์ด ๋์—†๋Š” ์ž์ „๊ฑฐ ์ด๋™์„ ์ค‘์ง€ํ•ฉ์‹œ๋‹ค.

ํ˜„์žฌ ๊ตฌ๋ฌธ์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์€ ์‹ค์ œ ๋‹จ์ ์ด ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์•…์˜ ์ผ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‹จ์ˆœํ•œ ์ž์ „๊ฑฐ ์ด๋™์ด ์•„๋‹™๋‹ˆ๋‹ค. ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ „์ฒด ์Šค๋ ˆ๋“œ๋ฅผ ๊ฑด๋„ˆ๋›ฐ๊ณ  ..= ๊ตฌ๋ฌธ์€ ์ง€๊ธˆ๊นŒ์ง€ ๊ฐ€์žฅ ๋งŽ์ด ์ˆ˜์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค...

์ด ์‹œ์ ์—์„œ ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์ฃฝ์€ ๋ง์„ ์น˜๋Š” ๊ฒƒ ๊ฐ™์€ ๋Š๋‚Œ์ด ๋“ค์ง€๋งŒ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•˜๋ฉด... .. ์™€ ... ๋Š” ๋ง ๊ทธ๋Œ€๋กœ ๊ฐ€๋Šฅํ•œ ํ•œ ๊ฐ€์žฅ ์ž‘์€ ๋ฌธ์ž์˜ ์‚ฌ๋ณธ์ž…๋‹ˆ๋‹ค. ์ž…๋ ฅํ•˜๊ฑฐ๋‚˜ ์ฝ์„ ์ˆ˜ ์žˆ๊ณ , ๋™์ผํ•œ ๋ฌธ์ž ๊ทธ๋ฃน๊ณผ ํ˜ผํ•ฉ๋˜์–ด ์žˆ์œผ๋ฉฐ, ๋‘ ๊ฐ€์ง€ ๋ชจ๋‘๋ฅผ ์™„์ „ํžˆ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ๋งค์šฐ ์ผ๋ฐ˜์ ์ด๊ณ  ์ข…์ข… ์งœ์ฆ๋‚˜๊ฒŒ ์ฐพ๊ธฐ ์–ด๋ ค์šด ์˜ค๋ฅ˜ ํด๋ž˜์Šค(์ผ๋ถ€ ์˜ค๋ฅ˜)๋ฅผ ์ƒ์„ฑํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๊ณผ ๊ธฐ๊ณ„์—๊ฒŒ.

๋˜๋Š” ๋ง ๊ทธ๋Œ€๋กœ ์„ธ๊ณ„์˜ ๋‹ค๋ฅธ ๊ตฌ๋ฌธ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•œํŽธ์œผ๋กœ๋Š” ๊ทธ ์šฐ๋ ค์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํ•œํŽธ์œผ๋กœ๋Š” ํ˜„์žฌ ... ํŒจํ„ด ์ผ์น˜ ๊ตฌ๋ฌธ์ด ์ด๋ฏธ ํฌํ•จ๋˜์–ด ์žˆ์–ด Rust์˜ ๋‹ค๋ฅธ ๊ณณ์—์„œ ์ด๋ฏธ ์‚ฌ์šฉ๋œ ๊ตฌ๋ฌธ๊ณผ ์™„๋ฒฝํ•˜๊ฒŒ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค.

์‹œ๊ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ๊ฑฐ๋‚˜ 4k ๋ชจ๋‹ˆํ„ฐ์™€ 10pt ๊ธ€๊ผด์„ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ๊ทธ๋Ÿด ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ๊ฐœ์ธ์ ์œผ๋กœ ์ฐจ์ด์ ์„ ์ธ์‹ํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ํ•ฉ์˜๊ฐ€ ..= ์— ์žˆ๋Š” ๊ฒƒ ๊ฐ™์œผ๋ฉฐ ์ €๋„ ๊ดœ์ฐฎ์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

FWIW, ๋‚˜๋Š” .. ์˜๋ฏธํ•  ๋•Œ ์‹ค์ˆ˜๋กœ ... ์ž…๋ ฅํ•œ ๋‹ค์Œ ์ž ์‹œ ๋™์•ˆ ๋ˆˆ์น˜์ฑ„์ง€ ๋ชปํ–ˆ์ง€๋งŒ ์ž ์‹œ ํ›„ ๋‚ด ํ”„๋กœ๊ทธ๋žจ์ด ์ด์ƒํ•˜๊ฒŒ ์ž‘๋™ํ•˜๋Š” ์ด์œ ๊ฐ€ ๊ถ๊ธˆํ–ˆ์Šต๋‹ˆ๋‹ค.
์˜ˆ, ๋” ๋ˆˆ์— ๋„๋Š” ์ฐจ์ด๊ฐ€ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ ..= ๊ฐ€ ๊ฐ€์žฅ ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค.

@rust-lang/lang ํ† ๋ก ์„ ์œ„ํ•œ ์ง€๋ช…. ๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ..= ์ฑ„ํƒํ•˜๊ณ  ๊ทธ๊ฒƒ์„ ํ•˜๋ฃจ๋ผ๊ณ  ๋ถˆ๋Ÿฌ์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜์ •๋œ RFC๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ? ๊ทธ๋ƒฅ ํ•ด? ์—ฌ๊ธฐ์—๋Š” ํŒจํ„ด์—์„œ ๊ธฐ์กด ... ๊ตฌ๋ฌธ์„ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ํฌํ•จ๋ฉ๋‹ˆ๊นŒ? (๋‚˜๋Š” ๊ทธ๋ ‡๊ฒŒ ๊ฐ€์ •ํ•œ๋‹ค.)

๋‚˜๋Š” ๋ฒ”์œ„์— ... ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ๊ฐ•๋ ฅํžˆ ์ฐฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด ์Šค๋ ˆ๋“œ ๋˜๋Š” RFC ์Šค๋ ˆ๋“œ์—์„œ ์ด๋ฏธ ์–ธ๊ธ‰๋˜์—ˆ๋Š”์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ... ๊ฐ€ .. ์™€ ๋น„์Šทํ•ด ๋ณด์ด๋Š” ๊ฒƒ ์™ธ์—๋„ ... ์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค ... ์ž…๋‹ˆ๋‹ค.

..= ๋Š” ๋ถ„๋ช…ํ•ด ๋ณด์ด๊ณ  ์ƒ๋Œ€์ ์œผ๋กœ ์ถ”ํ•จ์€ .. ๋ณด๋‹ค ๋œ ์ผ๋ฐ˜์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ •๋‹นํ™”๋ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—๋Š” ํŒจํ„ด์˜ ๊ธฐ์กด ... ๊ตฌ๋ฌธ์„ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ํฌํ•จ๋ฉ๋‹ˆ๊นŒ? (๋‚˜๋Š” ๊ทธ๋ ‡๊ฒŒ ๊ฐ€์ •ํ•œ๋‹ค.)

์ข‹์€ ์ƒ๊ฐ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ... ์— ๋Œ€ํ•ด ๊ฒฝ๊ณ ํ•˜๊ณ  ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ํŒจํ„ด์—์„œ .. ๋ฐ ..= ๋ฅผ ๋ชจ๋‘ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๊ตฌ๋ฌธ ์—…๋ฐ์ดํŠธ๋ฅผ ์œ„ํ•œ ์ž๋™ํ™”๋œ ๋„๊ตฌ ์—†์ด ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์˜ํ–ฅ์„ ๋ฏธ์น  ๊ฒฝ๊ณ ๋ฅผ ๋„์ž…ํ•˜๋Š” ๊ฒƒ์„ ๊ฒฝ๊ณ„ํ•˜์ง€๋งŒ ... ์—์„œ ..= ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์€ ํŠนํžˆ ๊ฐ„๋‹จํ•œ ๋ณ€๊ฒฝ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋˜ํ•œ ๊ทธ๋Ÿฌํ•œ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๊นŒ์ง€ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š์ง€๋งŒ ๊ฒฝ๊ณ ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ์—ฐ๊ธฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์€ ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๊นŒ?

์ €๋Š” ... ๊ฐ€ ๋” "์ผ๋ฐ˜์ ์ธ" ๊ตฌ๋ฌธ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ•๋ ฅํ•˜๊ฒŒ ์ฐฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ..= ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์–ธ์–ด๋Š” ๋ชจ๋ฅด์ง€๋งŒ .. ๋ฐ ... ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์–ธ์–ด๋Š” ๋งŽ์Šต๋‹ˆ๋‹ค.

..= ์— ๋Œ€ํ•œ ๊ฐ์ •์ด ๊ฐ•ํ•˜๋ฉด ์‹œ๊ฐ์  ๋ฌธ์ œ๋ฅผ ํ”ผํ•˜๊ณ  ๋‹ค์‹œ ๋ฌด๋ฃŒ๋กœ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ํฌ๊ด„์ ์ธ ๋ฒ”์œ„ ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ (๋Œ€์‹  ๋‚ด๊ฐ€ ๋ณด๊ธฐ์— ์ถฉ๋ถ„ํžˆ ๊ฐ„๊ฒฐํ•ด ๋ณด์ด๋Š” (a..b).inclusive() ๋ฉ”์„œ๋“œ๋ฅผ ์„ ํƒํ•จ) ๊ฐ€๋ณ€ ์ œ๋„ค๋ฆญ์˜ ๊ฒฝ์šฐ ์ตœ๋Œ€ ... ์ž…๋‹ˆ๋‹ค.

ํŽธ์ง‘ :์— ๋Œ€ ํ•œ ํ•˜๋‚˜ ๊ฐœ์˜ ์ข‹์€ ์ธ์ˆ˜ (a..b).inclusive() ์šฐ๋ฆฌ๊ฐ€ ์•„์งํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค ... ์— match ๋ถˆํ–‰ํžˆ๋„๋กœ ๊ต์ฒดํ•˜๊ณ  ์ƒˆ๋กœ์šด ๊ตฌ๋ฌธ. :ํ˜ผ๋ž€์Šค๋Ÿฌ์šด:

@steveklabnik ์‚ฌ๊ณผ์ด ๊ฒฝ์šฐ ์ด๋ฏธ ์–ด๋”˜๊ฐ€์— (๋งค์šฐ ๊ธด) ์Šค๋ ˆ๋“œ ๋งŒ ์–ธ๊ธ‰ํ•œ๋‹ค : ๋‹ค๋ฅธ ์–ธ์–ด๋Š” ๋ชจ๋‘ ๋ฌด์—‡์„ ์‚ฌ์šฉ .. ๋ฐ ... ๊ฐ๊ฐ ๋…์ ์ ์ด๊ณ  ํฌ๊ด„์  ์ธ ๋ฒ”์œ„์— ๋Œ€ํ•œ์„?

Rust๋Š” ๋‹ค๋ฅธ ์–ธ์–ด์˜ ์œ ์šฉํ•œ ๊ธฐ๋Šฅ๊ณผ ๊ตฌ๋ฌธ์„ ์ฑ„ํƒํ–ˆ์ง€๋งŒ ์„ ํƒ์ ์œผ๋กœ , ์ ์ ˆํ•œ ๊ฒฝ์šฐ ๊ฑฐ๋ถ€ํ•˜๊ฑฐ๋‚˜ ์ ์šฉํ•œ ์—ญ์‚ฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

@joshtriplett Ruby๋Š” ๋‘˜ ๋‹ค ์‚ฌ์šฉํ•˜์ง€๋งŒ ๋ฐ˜๋Œ€์˜ ์˜๋ฏธ๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค( .. ๋Š” ํฌํ•จ, ... ๋Š” ์ œ์™ธ). ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด Ruby์—์„œ ์ข‹์€ ์ƒ๊ฐ์ด์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์œผ๋ฉฐ, ์šฐ๋ฆฌ๊ฐ€ ๋‘˜ ๋ชจ๋‘๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์ด ์ž ์žฌ์ ์œผ๋กœ ํ›จ์”ฌ ๋” ํ˜ผ๋ž€์Šค๋Ÿฌ์šธ ์ˆ˜ ์žˆ์ง€๋งŒ ๊ฑฐ๊พธ๋กœ ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@joshtriplett ๋‚ด๊ฐ€ ๊ฐ€์žฅ ์นœ์ˆ™ํ•œ ๊ฒƒ์€ Ruby์ž…๋‹ˆ๋‹ค. Perl์—์„œ ๊ฐ€์ ธ์˜จ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ..= ๋ณด๋‹ค Ruby์—์„œ ๊ฑฐ๊พธ๋กœ ๋œ ์˜๋ฏธ๋ก ์ด ๋” ์ข‹์Šต๋‹ˆ๋‹ค.

์†”์งํžˆ ๋งํ•ด์„œ, ๋‚˜๋Š” ๋‹ค๋ฅธ ์–ด๋–ค ๊ฒƒ๋ณด๋‹ค ์•ˆ์ •์ ์ธ ํฌ๊ด„์ ์ธ ๋ฒ”์œ„ ๊ตฌ๋ฌธ์„ ์„ ํ˜ธํ•˜๊ณ  ..= ์— ๋Œ€ํ•œ ๋‚˜์˜ ๊ฐ•๋ ฌํ•œ ํ˜์˜ค๋Š” ๊ฐœ์ธ์ ์ธ ๊ฒƒ์ด๋ฉฐ ํ•ฉ๋ฆฌ์ ์ธ ์‚ฌ๋žŒ๋“ค์€ ๋™์˜ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Œ์„ ์ธ์‹ํ•ฉ๋‹ˆ๋‹ค.

@steveklabnik Swift๋Š” ..< . ์ œ ์ƒ๊ฐ์—๋Š” ๋งž์ฃ ? ..= ์™€ ๋น„์Šทํ•˜์ง€๋งŒ ์ž˜๋ชป๋œ ๊ฒฝ์šฐ์— ์ตœ์ ํ™”๋œ๋‹ค๋Š” ์ ์—์„œ ๋” ๋‚˜์œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. =)

Swift๋Š” ๋ฐฐํƒ€์ ์ธ ๊ฒฝ์šฐ ..<๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ํฌ๊ด„์ ์ธ ๊ฒฝ์šฐ ...๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค(ํ•ด๋‹น ์šฉ์–ด๋Š”
"๋ฐ˜๊ฐœ๋ฐฉ" ๋ฐ "๋‹ซํž˜").

๋‚˜๋Š” ์—ฌ์ „ํžˆ ..<(..๋ฅผ ์†๊ธฐ๋กœ ์‚ฌ์šฉ) ๋ฐ ..=๋ฅผ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋˜ ๋‹ค๋ฅธ ๋ฏธํ•ด๊ฒฐ ์งˆ๋ฌธ(์•„๋งˆ๋„ ์ด ์ถ”์  ๋ฌธ์ œ์˜ ๋ฒ”์œ„์— ์†ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Œ)์€ ๋‹ซํžŒ ๋ฒ”์œ„์— ๋Œ€ํ•œ ๊ตฌ๋ฌธ์„ "๊ทธ๋ƒฅ" ์ฑ„ํƒํ• ์ง€, ์•„๋‹ˆ๋ฉด ์ฒซ ๋ฒˆ์งธ ์ง€์ ์ด ์—ด๋ฆฐ ๋ฒ”์œ„(์˜ˆ: Strawman >..> ๋ฐ >..=.

2017๋…„ 3์›” 16์ผ ๋ชฉ์š”์ผ ์˜คํ›„ 2์‹œ 19๋ถ„, Niko Matsakis [email protected]
์ผ๋‹ค:

@steveklabnik https://github.com/steveklabnik Swift๋Š” ..<๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
์˜ค๋ฅธ์ชฝ? ..=์™€ ๋น„์Šทํ•ด ๋ณด์ด์ง€๋งŒ ๋” ๋‚˜์˜๋‹ค๋Š” ์ ์—์„œ ์ตœ์ ํ™”๋ฉ๋‹ˆ๋‹ค.
(์ด๋ชจ) ์ž˜๋ชป๋œ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. =)

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/rust-lang/rust/issues/28237#issuecomment-287147321 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AAC3n0Wop5fJh9HVo7pSqo0riHm96Gm4ks5rmX1BgaJpZM4F4LbW
.

์ „์ฃผ๊ณก์— inclusive ํ•จ์ˆ˜๊ฐ€ ์žˆ์–ด๋„ ์ƒ๊ด€ ์—†์Šต๋‹ˆ๋‹ค.

for x in inclusive(1..10) {

}

๋‚˜๋Š” ์„ฑ๋ƒฅ๊ณผ์˜ ๋Œ€์นญ์„ฑ์ด ์„ค๋“๋ ฅ ์žˆ๋Š” ์ฃผ์žฅ์ด๋ผ๊ณ  ๋Š๋‚€ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋…์ ์ ์ธ .. ํŒจํ„ด์„ ์ถ”๊ฐ€ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ๋‚˜๋Š” ๊ทธ๊ฒƒ๋“ค๋„ ์‹ซ์–ดํ•ฉ๋‹ˆ๋‹ค - ์ด์ œ ํŒจํ„ด์˜ ๊ฐ’์ด ํŒจํ„ด๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค! ๋ฒ”์œ„๋ฅผ ์ผ์น˜์‹œํ‚ค๋Š” ๊ฒƒ์€ ๋ฒ”์œ„๋ฅผ ๋ฐ˜๋ณตํ•˜๋Š” ๊ฒƒ๊ณผ ๊ทผ๋ณธ์ ์œผ๋กœ ๋‹ค๋ฅด๋ฉฐ ๋Œ€์นญ์ด์–ด์•ผ ํ•  ์ด์œ ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์—ฌ์ „ํžˆ ์˜ต์…˜์ด๋ผ๋ฉด ํŒจํ„ด์—์„œ .. ๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•˜์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๊นŒ?

..= ๋ฐ ... ์˜ ๋‹จ์ ์ด ๋ชจ๋‘ ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ..= ๋Š” ์ƒ๋‹นํžˆ ์ด์ƒํ•˜์ง€๋งŒ ... ๋Š” ์˜ค๋ฅ˜ ๊ฐ€๋Šฅ์„ฑ์„ 1๋งŒํผ ๋†’์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋์—†๋Š” ๋ฒ„๊ทธ ๊ฐ€๋Šฅ์„ฑ๋ณด๋‹ค ์ด์ƒํ•˜๊ฒŒ ๋ณด์ด๋Š” ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค(๋ชจ๋“  ์–ธ์–ด๋Š” ๋‹ค๋ฅธ ์–ธ์–ด์—๋Š” ์—†๋Š” ์—ฐ์‚ฐ์ž๋ฅผ ๋„์ž…ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Swift์˜ ..< , F# ๋ฐ Scala์˜ ๋ชจ๋“  ์—ฐ์‚ฐ). ์–ด์จŒ๋“  ์‚ฌ๋žŒ๋“ค์€ Rust ์ฑ…์„ ์ฝ์–ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด Ruby์—์„œ Rust๋กœ ์˜ค๊ณ  ์žˆ๋‹ค๋Š” ์ ์„ ๊ณ ๋ คํ•˜๋ฉด Ruby์™€ ๋น„๊ตํ•˜์—ฌ ์ด์ „ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ( ... ๋Š” ์˜คํ”„ ๊ฐ€๋Šฅ์„ฑ์„ 1 ์˜ค๋ฅ˜๋งŒํผ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค๋Š” ์ฃผ์žฅ์— ์ถ”๊ฐ€๋กœ.)
Swift์—์„œ๋Š” ..< ๋ฅผ ์ˆ˜๋ฝํ•˜์ง€๋งŒ Rust์—์„œ๋Š” ..= ๋ฅผ ์ˆ˜๋ฝํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ..= ๋Š” ๊ทธ๋ ‡๊ฒŒ ์ด์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํŒจํ„ด์—์„œ ๋ฒ”์œ„ ๊ตฌ๋ฌธ์„ ํ™•์žฅํ•˜๋Š” ๊ฒƒ์€ AFAIK์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์—ฌ์ „ํžˆ ๋ฏธํ•ด๊ฒฐ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.
ํ•œ ๊ฐ€์ง€ ์ด์œ ๋Š” Enum::Variant(..) ๊ฐ€ ์ด๋ฏธ
์œ ํšจํ•˜๊ณ  Enum::Variant(RangeFull) ๊ฐ€ ์ค‘๋‹จ๋จ์„ ์˜๋ฏธํ•˜๋„๋ก ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

2017๋…„ 3์›” 16์ผ ๋ชฉ์š”์ผ ์˜คํ›„ 3์‹œ 77๋ถ„์— Boscop [email protected]์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

์ด์ƒํ•˜๊ฒŒ ๋ณด์ด๋Š” ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค(๋ชจ๋“  ์–ธ์–ด๋Š”
๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š์€ ์—ฐ์‚ฐ์ž(์˜ˆ: Swift์˜ ..<, F#์˜ ๋ชจ๋“  ์—ฐ์‚ฐ)
๋ฐ ์Šค์นผ๋ผ). ์–ด์จŒ๋“  ์‚ฌ๋žŒ๋“ค์€ Rust ์ฑ…์„ ์ฝ์–ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
Ruby์—์„œ Rust๋กœ ์˜ค๋Š” ์‚ฌ๋žŒ๋“ค์ด ๋งŽ๋‹ค๋Š” ์ ์„ ๊ฐ์•ˆํ•  ๋•Œ,
Ruby์™€ ๋น„๊ตํ•˜์—ฌ ๊ฑฐ๊พธ๋กœ๋˜์–ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค. (๋…ผ์ฆ์— ๋ง๋ถ™์—ฌ
๊ทธ๊ฒƒ์€ ... off์˜ ๊ฐ€๋Šฅ์„ฑ์„ 1 ์˜ค๋ฅ˜๋งŒํผ ์ฆ๊ฐ€์‹œํ‚ต๋‹ˆ๋‹ค.)
์–ด๋–ป๊ฒŒ Swift์—์„œ ..<๋ฅผ ๋ฐ›์•„๋“ค์ด๊ณ  Rust์—์„œ ..=๋ฅผ ๋ฐ›์•„๋“ค์ด์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/rust-lang/rust/issues/28237#issuecomment-287160485 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AAC3nz9ZNR2utl7LPTVvQPQ_Ma8sDBGuks5rmYhmgaJpZM4F4LbW
.

๊ทธ๋ž˜์„œ. slice.get(10...30) ๊ฐ™์€ ๊ฒƒ์„ ์ž…๋ ฅํ•˜๊ณ  ์ผ€์ดํฌ๋„ ๋จน๊ณ  ์‹ถ์–ด์š”.

๋‹ค๋ฅธ ๊ตฌ๋ฌธ๋ณด๋‹ค inclusive(0..10) ๋ฅผ ์„ ํ˜ธํ•œ๋‹ค๊ณ  ํ™•์‹ ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • @nagisa ๋Š” slice.get(10...30) ๋ฅผ ์“ฐ๊ณ  ์‹ถ์–ดํ•˜์ง€๋งŒ, slice.get(10...30) ์ธ์ง€ slice.get(10..30) ์ธ์ง€ ์„ธ์‹ฌํ•œ ์ฃผ์˜๋ฅผ ๊ธฐ์šธ์ด๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค . ๊ตฌ๋ฌธ์˜ ๊ทผ์ ‘์„ฑ์ด ์ง„์งœ ๋ฌธ์ œ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
  • ..= ๊ฐ€ ๋ฏธํ•™์ ์ด๊ณ  ์ง๊ด€์ ์ด์ง€ ์•Š๋‹ค๋Š” ๋ฐ ๋ชจ๋‘๊ฐ€ ๋™์˜ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
  • (0..10).inclusive() ๋Š” ๊ฐ™์€ ๊ตฌ๋ฌธ์ด์ง€๋งŒ ๋œ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์ˆ ์ ์œผ๋กœ inclusive prelude๋Š” ์•„๋งˆ๋„ ๋‘ ๊ตฌ๋ฌธ์„ ๋ชจ๋‘ ์ง€์›ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณด์ผ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

trait IntoInclusive {
    type Inclusive;
    fn inclusive(self) -> Self::Inclusive;
}

fn inclusive<T: IntoInclusive>(range: T) -> T::IntoInclusive {
    range.inclusive()
}

๋‚˜๋Š” ๋ชจ๋‘๊ฐ€ ..=๊ฐ€ ๋ฏธํ•™์ ์ด๊ณ  ์ง๊ด€์ ์ด์ง€ ์•Š๋‹ค๋Š” ๋ฐ ๋™์˜ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ข€ ์ง€๋‚˜์นœ ์ผ๋ฐ˜ํ™”๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ..= ๋Š” inclusive() ์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•๋ณด๋‹ค ๋” ๋ฏธํ•™์ ์ด๊ณ  ์ง๊ด€์ ์ž…๋‹ˆ๋‹ค.

(๋˜ํ•œ, ์šฐ๋ฆฌ์˜ ํ˜์˜ค ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๋ชจ๋ฅด๋Š” ..= ํ•˜์ง€ ์•Š์€ ๊ฒƒ์„ ๋ฌธ์ œ ์ฐพ์„ ์ˆ˜) ์ž ์žฌ ์˜์‹ (๋˜๋Š” ์˜์‹์ ์ธ ๋…ธ๋ ฅ์ด ๋  ์ˆ˜ ... .)

.inclusive() ๋„ˆ๋ฌด ์ž์ฃผ ๋ฐœ์ƒ ๋ญ”๊ฐ€ ๋„ˆ๋ฌด ๊น๋‹ˆ๋‹ค (๊ทธ ์ฃผ์—, ๋‚˜๋Š” ๋˜ํ•œ์— ๋Œ€ํ•œ ์งง์€ ํ˜•ํƒœ๊ฐ€ ์žˆ์–ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐ .enumerate() ).
๊ทธ๋Ÿฌ๋‚˜ .inclusive() ๊ฐ€ ์žˆ๋”๋ผ๋„ ํ•จ์ˆ˜๋Š” ๋‘ ๊ฐœ๊ฐ€ ์•„๋‹ˆ๋ผ ํ•˜๋‚˜๋งŒ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๋˜ํ•œ ํฌํ•จ ๋ฒ”์œ„ ๊ตฌ๋ฌธ์ด ์—†์œผ๋ฉด match ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ Scala ์™€ ๊ฐ™์ด ์ผ๋ฐ˜์ ์ธ ๋ฐฉ์‹์œผ๋กœ ์ถ”์ถœ๊ธฐ๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์œ ํ˜•์ด ์ผ์น˜์—์„œ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํ•ด๋‹น ์ผ์น˜๋Š” ์•”์‹œ์ ์œผ๋กœ unapply ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

(๋˜ํ•œ ์šฐ๋ฆฌ๋Š” ..=์— ๋Œ€ํ•œ ํ˜์˜ค๊ฐ์ด ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒƒ์— ๋Œ€ํ•œ ๋ฌธ์ œ๋ฅผ ์ฐพ์œผ๋ ค๋Š” ๋ฌด์˜์‹์ (๋˜๋Š” ์˜์‹์ ์ธ) ๋…ธ๋ ฅ์ผ ์ˆ˜ ์žˆ๋Š”์ง€ ๋ชจ๋ฆ…๋‹ˆ๋‹ค....)

๋‚˜์—๊ฒŒ์„œ ์•„๋ฌด๋„. ์ด๊ฒƒ์€ ์ผ์ข…์˜ ์•…์˜์— ๋Œ€ํ•œ ๋น„๋‚œ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ ํฌํ•จ ๋ฒ”์œ„ ๊ตฌ๋ฌธ์ด ์—†์œผ๋ฉด ์ผ์น˜์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

ํฌํ•จ ๋ฒ”์œ„ ํŒจํ„ด์€ ์ด๋ฏธ match ์—์„œ ์ง€์›๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์‹ค ๊ทธ๊ฒƒ๋“ค์€ ์˜ค๋Š˜๋‚  ์šฐ๋ฆฌ๊ฐ€ ํŒจํ„ด์œผ๋กœ ์ง€์›ํ•˜๋Š” ์œ ์ผํ•œ ์ข…๋ฅ˜์˜ ๋ฒ”์œ„์ž…๋‹ˆ๋‹ค.

@withoutboats ์˜ˆ, ํ•˜์ง€๋งŒ "ํฌํ•จ ๋ฒ”์œ„ ๊ตฌ๋ฌธ์ด ์—†์œผ๋ฉด ๋งค์น˜์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค"๋ผ๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ๊ตฌ๋ฌธ์ด ์žˆ์ง€๋งŒ Scala์™€ ๊ฐ™์€ ์ถ”์ถœ๊ธฐ๊ฐ€ ์—†์œผ๋ฉด ๋งค์น˜์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด ์ฃผ์žฅ์€ .inclusive() ์— ๋ฐ˜๋Œ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ์˜ ์š”์ ์€ ํฌ๊ด„์  ๋ฒ”์œ„ ๊ตฌ๋ฌธ์ด ์ผ์น˜์—์„œ๋งŒ ์ž‘๋™ํ•˜๊ณ  ํ˜„์žฌ ๊ตฌ๋ฌธ ๋Œ€์‹  ๊ตฌ๋ฌธ์ด ๋ฌด์—‡์ธ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ํŠน๋ณ„ํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋˜์–ด์„œ๋Š” ์•ˆ ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํฌํ•จ: for i in 1..10! { }

Java/C/C++์—์„œ 15๋…„ ์ด์ƒ ์ผํ•œ ์‚ฌ๋žŒ์œผ๋กœ์„œ .. vs ... ๋Š” ๋งค์šฐ ํ˜ผ๋ž€์Šค๋Ÿฝ๊ณ  ์‹ค์ˆ˜๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋„ ๋ฒ„๊ทธ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ Ruby์™€์˜ ๊ด€๊ณ„๋Š” ์ด๊ฒƒ์„ ๋”์šฑ ํ˜ผ๋ž€์Šค๋Ÿฝ๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ..= ๋˜๋Š” ๋‹ค๋ฅธ ๋Œ€์•ˆ์ด ๋” ๋‚˜์€ ์ด์œ ์ž…๋‹ˆ๋‹ค.

๋‚ด '๋ชจ์ž'๋ฅผ ๋ง์— ๋˜์ง€๋Š” ๊ฒƒ:

for i in 1..10^

์˜ฌ๋ฐ”๋ฅธ ๊ฐ’์ด _up_ ๋๊นŒ์ง€ ๊ฐ„๋‹ค๋Š” ๊ฒƒ์„ ์ƒ์ง•ํ•˜๋Š” ๋ชจ์ž/์บ๋Ÿฟ.

@leebenson ๊ฐœ์ธ์ ์œผ๋กœ

for i in 1..^10

@retep998 ๋‚˜๋Š” ๋ณด๋‚ด๊ธฐ๋ฅผ

์˜ @ retep998 ๋‚˜๋Š” ๊ฐ™์ด ๋‹น์‹ ์˜ ์ œ์•ˆ ..^ ํ›จ์”ฌ ๋”๋ณด๋‹ค๋Š” ..= ; ๊ทธ๊ฒƒ์€ ๊ทธ ์˜๋ฏธ๋ฅผ ํ›จ์”ฌ ๋” ์—ฐ์ƒ์‹œํ‚ค๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋ฉฐ, ์ฆ๊ฐ€๋œ ํ• ๋‹น ์—ฐ์‚ฐ์ž์˜ ์ด์ƒํ•œ ๋ณ€ํ˜•(์˜ˆ += ๋ฐ *= )์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์–ด๋Š ์ชฝ์ด๋“  ... ๋ณด๋‹ค ํ›จ์”ฌ ๋‚ซ์Šต๋‹ˆ๋‹ค.

..^ ๋’ค์ฒ˜์งˆ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๊ฐœ์ธ์ ์ธ ์ˆ˜์ค€์—์„œ๋Š” ๋งค์šฐ ๋ชป์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค(๋ถ€๋ถ„์ ์œผ๋กœ๋Š” .. ๊ฐ€ ๋งŽ์€ ๊ธ€๊ผด์—์„œ ^ ์™€ ์ˆ˜์ง์œผ๋กœ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค).

UI/UX ์ „๋ฌธ๊ฐ€๋กœ์„œ, ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์ž์‹ ์˜ ์ด์ต์„ ์œ„ํ•ด ๋„ˆ๋ฌด ์˜๋ฆฌํ•œ ์˜ˆ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‹ค๋ฅธ ์–ธ์–ด์—์„œ ์™€์„œ ๋ณผ ๊ฒฝ์šฐ ..^ , ๋ชจ๋“  ๋‚˜๋Š” ์•Œ๊ณ ์žˆ๋‹ค (๋‚˜๋Š” ๋ฒ”์œ„๋กœ ์ธ์‹์กฐ์ฐจํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค 5..^15 ์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ์ด์ƒํ•œ ๋ถ€๋ถ„ ๊ณ„์Šน ์ถ•์•ฝ ๋  ์ˆ˜ 15! - 4! ) ์ธ๊ฐ„์€ ์ปจํ…์ŠคํŠธ์—์„œ ์ƒ๊ฐํ•˜๊ณ  ์บ๋ฆญํ„ฐ๊ฐ€ ์ฃผ๋ฅ˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ปจํ…์ŠคํŠธ์—์„œ ๊ฐ–๋Š” ์œ ์ผํ•œ ์—ฐ๊ด€์„ฑ์€ ์ง€์ˆ˜์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

(๋งŒ์•ฝ ์šฐ๋ฆฌ๊ฐ€ ๋ฌธ๋งฅ์—์„œ ์ƒ๊ฐํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด, ... ๋Š” ์‚ฐ๋ฌธ ์“ฐ๊ธฐ์˜ ๋Œ€ํ™”์—์„œ "๋‚ด์šฉ ์ƒ๋žต"๊ณผ ๊ฐ™์€ ์˜๋ฏธ์™€ ์œ ์ถ”ํ•˜์—ฌ "์ฝœ๋ฐฑ์ด ์—ฌ๊ธฐ์— ์‚ฝ์ž…๋จ" ๋˜๋Š” "์ด๋ฒคํŠธ ๋ฐœ์ƒ"๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ์˜๋ฏธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ฆ‰๊ฐ์ ์ธ ์˜ˆ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ํ™”์‚ด๊ณผ ์œ ์‚ฌํ•˜์—ฌ "๋๊นŒ์ง€ ์˜ฌ๋ผ๊ฐ‘๋‹ˆ๋‹ค"๋ผ๋Š” ์˜๋ฏธ๋ฅผ ๋ถ€์—ฌํ•˜๋Š” ๊ฒƒ์€ ๊ทธ๊ฒƒ์ด ์ƒˆ๋กœ์šด ์‚ฌ๋žŒ์˜ ๊ธฐ๋Œ€์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฐฉ์‹์— ์žˆ์–ด์„œ ์†์˜ ์†์ž„์ˆ˜๋ฅผ ํ†ตํ•ด ๋งˆ์ˆ ์„ ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.)

๋Œ€์กฐ์ ์œผ๋กœ, = ๋Š” ํ• ๋‹น์˜ ๋™์ž‘๊ณผ ํ‰๋“ฑ์˜ ๊ฐœ๋…์„ ๋ชจ๋‘ ์–ธ๊ธ‰ํ•œ ์„ ๋ก€๊ฐ€ ์žˆ์œผ๋ฉฐ ..= ๋Œ€ํ•œ "์ด์ƒํ•œ ์ง€์ˆ˜ ๊ตฌ๋ฌธ"๊ณผ ๊ฐ™์€ ์˜คํ•ด๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด " ํ• ๋‹น ์—ฐ์‚ฐ์ž์— ์˜ํ•ด ์•„์ง ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์€ "๋Œ€์ž… + ํ‰๋“ฑ"์€ "์˜ค๋ฅธ์ชฝ ์ˆซ์ž๋กœ ๋๋‚˜๋Š” ์ผ๋ จ์˜ ์ˆซ์ž์™€ ๊ด€๋ จ์ด ์žˆ๋Š” ๊ฒƒ"์ž…๋‹ˆ๋‹ค... ์ด๋Š” ๋ฒ”์œ„ ๊ตฌ๋ฌธ์ด ํ•˜๋Š” ์ผ์— ๋Œ€ํ•œ ๋ชจํ˜ธํ•˜์ง€๋งŒ ์ ์ ˆํ•œ ์ •์˜์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ ..^ ๊ฐ€ ์ปจํ…์ŠคํŠธ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ฒ”์œ„ ๊ตฌ๋ฌธ์ด๋ผ๋Š” ๊ฒƒ์„ ์ธ์‹ํ•˜๋”๋ผ๋„ ^ ๊ฐ€๋Šฅ์„ฑ์„ ์ œ์™ธ ์ค‘์š”ํ•œ ์ƒํ™ฉ์—์„œ, 2..^8 ๊ฐœ๋ฐฉํ˜• ๋ฒ”์œ„ ๋‘์—์„œ ์‹œ์ž‘ํ•˜๊ณ  (์ œ์˜ ๋Šฅ๋ ฅ์— ์ด์ „ ๋‹จ๊ณ„๋ฅผ ๊ณ ๋ คํ•˜์—ฌ, ์ฆ‰. ์Šคํ…Œํ•‘ ์†๊ธฐ 2..Inf^8 ๋Š” 2..+8 ๊ฐ€ "2์—์„œ ๋ฌดํ•œ๋Œ€๊นŒ์ง€ 8๋‹จ๊ณ„๋กœ ๋ฐ˜๋ณต"์˜ ์•ฝ์–ด์ž…๋‹ˆ๋‹ค.)

์‚ฌ๋žŒ๋“ค์€ while ๋ฃจํ”„๋ฅผ ์ž‘์„ฑํ•  ๋•Œ < (๋…์ ) ๋Œ€ <= (ํฌํ•จ)์˜ ๊ด€์ ์—์„œ ์ƒ๊ฐํ•˜๋Š” ๋ฐ ์ต์ˆ™ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ..= ๊ทธ ๋ฌธ์ œ๋ฅผ ํ”ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ C ์Šคํƒ€์ผ for ๋ฃจํ”„.

@ssokolow ํ•ฉ๋ฒ•์  ๋ถ„์„.

๊ฐœ์ธ์ ์œผ๋กœ ..= ๋˜๋Š” ..^ ๋’ค์— ๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘˜ ์ค‘ ํ•˜๋‚˜์˜ ๊ธฐํ˜ธ๋Š” ๋‚˜์—๊ฒŒ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๊ฐ๊ฐ '์ตœ๋Œ€ ๋ฐ ๊ฐ™์Œ' ๋˜๋Š” ๋‹จ์ˆœํžˆ '์ตœ๋Œ€'์ž…๋‹ˆ๋‹ค. ๋‚ด ์ƒ๊ฐ์—๋Š” ๋‘˜ ๋‹ค ๊ฐ™์€ ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ ๋ชจ๋‘๋Š” ๋‹ค๋ฅธ ์–ธ์–ด์™€ ์˜ค์—ผ๋œ ์ƒ์ง•/ํŽธ๊ฒฌ์˜ ์—ญ์‚ฌ๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ์‚ฌ๋žŒ์„ ๋งŒ์กฑ์‹œํ‚ค๋Š” ๋ฌด์–ธ๊ฐ€๋ฅผ ์ƒ๊ฐํ•ด ๋‚ด๊ธฐ ์–ด๋ ค์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฒ˜์Œ์— ^ ๊ธฐํ˜ธ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์•ž์— ์‚ฝ์ž…ํ•˜๋ฉด '๊ณ„๋‹จ'์ด๋‚˜ ์ง€์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋Š๋‚Œ์ด ์žˆ๋Š” ๋ฐ˜๋ฉด ์ ‘๋ฏธ์‚ฌ๋Š” ๋ฒ”์œ„๋ฅผ ๋”๋Ÿฝํžˆ์ง€ ์•Š๊ณ  ์–ด๋–ป๊ฒŒ๋“  ๋” ์ˆœ์ˆ˜ํ•œ ๋Š๋‚Œ์œผ๋กœ ๋‚จ๊ฒผ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๊ฑด ๋‚˜๋ฟ์ด์•ผ.

์–ด์จŒ๋“  ๋‚˜๋Š” ์–ด๋–ค ํ˜•ํƒœ์˜ ์†๊ธฐ ํ‘œ๊ธฐ๋ฒ•๊ณผ ์˜ค๋ฅธ์ชฝ ๊ฐ’์„ ์•”์‹œ์ ์œผ๋กœ +1ํ•˜๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์ด ํ•จ์ˆ˜ ํ˜ธ์ถœ์ฒ˜๋Ÿผ ๋Š๊ปด์ง€๋Š” ๊ฒƒ์— ์œ„์ž„ํ•˜๊ธฐ์—๋Š” ๋„ˆ๋ฌด ์ผ๋ฐ˜์ ์ธ ๊ตฌ๋ฌธ์ด๋ผ๋Š” ์ด์ „ ์˜๊ฒฌ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ... ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๊ฒ ์ง€ = / == ๋ฒ„๊ทธ์ผ ๊ฒƒ์ด๊ณ  ๋ˆ„๊ตฐ๊ฐ€์˜ ๋ฐœ์„ ์˜๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค...

๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ ๊ทน์ ์œผ๋กœ ์‹ซ์–ดํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค ..= ์•„๋ฌด๋„ ๋ถ€์ •์ ์ธ ๋ง์„ ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค
์•ฝ .... ๊ทธ๋ƒฅ ์กฐ์šฉํžˆ ๋ฌด์‹œํ–ˆ์Šต๋‹ˆ๋‹ค (๋ช‡ ๊ฐ€์ง€ ์—„์ง€ ์†๊ฐ€๋ฝ ์ œ์™ธ) I
๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๋‹ค์‹œ ์ œ๊ธฐํ•˜๊ณ  ์‚ฌ๋žŒ๋“ค์ด ๊ทธ๊ฒƒ์„ ๊ณ ๋ คํ•˜๊ณ  ์ค„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.
๋ฐ˜๋Œ€ํ•˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ด์œ .

์†Œ์Œ์ด ๋” ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ์–ธ๊ธ‰ํ•˜๊ธฐ์กฐ์ฐจ ์‹ซ์ง€๋งŒ .:
(์  ์ฝœ๋ก ) ํฌํ•จ? ์  3๊ฐœ์ง€๋งŒ ๋ฌธ์ž๋Š” 2๊ฐœ์ž…๋‹ˆ๋‹ค.
๋ชจ์–‘์ด ..

2017๋…„ 3์›” 18์ผ ํ† ์š”์ผ ์˜ค์ „ 11์‹œ 50๋ถ„, Lee Benson ์•Œ๋ฆผ @github.com
์ผ๋‹ค:

@ssokolow https://github.com/ssokolow ํ•ฉ๋ฒ• ๋ถ„์„.

๊ฐœ์ธ์ ์œผ๋กœ ๋‚˜๋Š” ..= ๋˜๋Š” ..^ ์ค‘ ํ•˜๋‚˜๋ฅผ ๋’ค์—์„œ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘˜ ์ค‘ ํ•˜๋‚˜์˜ ์ƒ์ง•
๋‚˜์—๊ฒŒ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰ '์ตœ๋Œ€ ๋ฐ ๊ฐ™์Œ' ๋˜๋Š” ๋‹จ์ˆœํžˆ '์ตœ๋Œ€',
๊ฐ๊ธฐ. ๋‚ด ์ƒ๊ฐ์—๋Š” ๋‘˜ ๋‹ค ๊ฐ™์€ ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.

๋ชจ๋‘๊ฐ€ ๋งŒ์กฑํ•  ์ˆ˜ ์žˆ๋Š” ์ œํ’ˆ์„ ์ฐพ๊ธฐ๋Š” ํž˜๋“ค๊ฒ ์ง€๋งŒ,
์™œ๋ƒํ•˜๋ฉด ์šฐ๋ฆฌ๋Š” ๋ชจ๋‘ ๋‹ค๋ฅธ ์–ธ์–ด์—์„œ ์—ญ์‚ฌ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ๊ทธ๊ฒƒ๊ณผ ํ•จ๊ป˜ ๋”๋Ÿฝํ˜€์ง€๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
์ƒ์ง•/ํŽธํ–ฅ. ์ฒ˜์Œ์— ์ˆซ์ž ๋’ค์— ^ ๊ธฐํ˜ธ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด, ์ด์ „์— ์‚ฝ์ž…ํ•˜๋Š” ๊ฒƒ์€ '๋‹จ๊ณ„'๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋Š๋‚Œ์„ ๊ฐ€์กŒ๊ธฐ ๋•Œ๋ฌธ์—
๋˜๋Š” ์ง€์ˆ˜, ์ ‘๋ฏธ์‚ฌ๋Š” ๋ฒ”์œ„๋ฅผ ์˜ค์—ผ์‹œํ‚ค์ง€ ์•Š๊ณ  ์–ด๋–ป๊ฒŒ ๋“  ๋” ์ˆœ์ˆ˜ํ•˜๊ฒŒ ๋‚จ๊ฒผ์Šต๋‹ˆ๋‹ค.
๊ฐ์ •. ํ•˜์ง€๋งŒ ๊ทธ๊ฑด ๋‚˜๋ฟ์ด์•ผ.

์–ด์จŒ๋“ , ๋‚˜๋Š” ์–ด๋–ค ํ˜•ํƒœ์˜ ์†๊ธฐ ํ‘œ๊ธฐ๋ฒ•์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.
์•”์‹œ์ ์œผ๋กœ ์˜ค๋ฅธ์ชฝ ๊ฐ’์„ +1ํ•˜๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด์ „์— ๋™์˜ํ•œ๋‹ค
์ด๊ฒƒ์€ ๋„ˆ๋ฌด ์ผ๋ฐ˜์ ์ธ ๊ตฌ๋ฌธ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ์— ์œ„์ž„ํ•˜๊ธฐ์—๋Š”
ํ•จ์ˆ˜ ํ˜ธ์ถœ์ฒ˜๋Ÿผ ๋Š๊ปด์ง„๋‹ค. ๋‚˜๋Š” ์ƒ๊ด€ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค ...ํ•˜์ง€๋งŒ ๋‹น์—ฐํ•ฉ๋‹ˆ๋‹ค.
์•„๋งˆ๋„ = / == ์ƒˆ ์˜ท์— ๋ฒ„๊ทธ๊ฐ€ ์žˆ๊ณ  ๋ˆ„๊ตฐ๊ฐ€๋ฅผ ์˜๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๋ฐœ...

โ€”
๋‹น์‹ ์ด ๋Œ“๊ธ€์„ ๋‹ฌ์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/rust-lang/rust/issues/28237#issuecomment-287566556 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AIhJ6jWgPwndKaQvVjULlV_OoC6WDO0Cks5rnCeLgaJpZM4F4LbW
.

์˜ค, ์ด๊ฒƒ์€ ์•„์ง ์ž์ „๊ฑฐ ํƒˆ์ทจ ๋‹จ๊ณ„์— ์žˆ์Šต๋‹ˆ๊นŒ? ๐Ÿ˜†

๋‹ค์‹œ ์ฝ์–ด๋ณด๋‹ˆ @nikomatsakis ๊ฐ€ ..= ๋งŒ๋“ค๊ณ  ํ•˜๋ฃจ๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๋ฐ ๋™์˜ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค . .. ๋Œ€ ... ์˜ ์œ ์‚ฌ์„ฑ์€ ๋„ˆ๋ฌด ๋ฏธ๋ฌ˜ํ•˜๋ฉฐ ๊ฐ€๋ณ€ ์ œ๋„ค๋ฆญ(https://github.com/)์— ๋ชจํ˜ธ์„ฑ ์—†์ด ... ํ† ํฐ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. Rust-lang/rfcs/pull/1935), ์—ฌ๊ธฐ์„œ ๋‘˜ ์‚ฌ์ด์˜ ํ˜ผ๋™์„ ์ค„์—ฌ์•ผ ํ•˜๋Š” ๋งค์šฐ ๋šœ๋ ทํ•œ ๋ชฉ์ ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  ๋ฐ˜๊ฐœ๋ฐฉํ˜• ๋ณ€ํ˜•์— ๋Œ€ํ•ด ๋ณด๋‹ค ์ผ๋ฐ˜ํ™”๋œ ๊ตฌ๋ฌธ์— ๋Œ€ํ•œ ์š•๊ตฌ๊ฐ€ ์—ฌ์ „ํžˆ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ .. ๋ฐ ..= ์ด์™ธ์˜ ์–ธ์–ด ๊ตฌ๋ฌธ์„ ์ œ๊ณตํ•˜๋ ค๋Š” ๋…ธ๋ ฅ์€ ๊ฐ€์น˜๊ฐ€ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. .

๋” ๋งŽ์€ ์†Œ์Œ ๋•Œ๋ฌธ์— ์–ธ๊ธ‰ํ•˜๊ธฐ์กฐ์ฐจ ์‹ซ์ง€๋งŒ ํฌ๊ด„์ ์ธ ๊ฒฝ์šฐ .:(์  ์ฝœ๋ก )์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

@ssokolow ๊ฐ€ UI/ ๋ฒˆ ๊ฐ•์กฐํ•œ ๊ฒƒ

๋‚˜๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ์„ธ ๋ฒˆ์งธ ์ ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์— ๋Œ€ํ•ด _zero_ ๋ฐ˜๋Œ€ํ•˜์ง€๋งŒ, ๊ทธ๊ฒƒ์ด ๊ฒฐ๊ตญ ์ผ๋ถ€ ์‚ฌ๋žŒ๋“ค์„ ๊ฑธ๋ ค ๋„˜์–ด์ง€๊ฒŒ ํ•  ๊ฒƒ์ด๋ผ๋Š” ์‚ฌ์‹ค์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์„ค๋ช…ํ•˜๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ์‰ฝ๊ธฐ ๋•Œ๋ฌธ์— ์˜๋ฆฌํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์„ค๊ณ„ํ•˜๊ธฐ ์œ„ํ•ด ์–ธ์–ด์— ์ฑ…์ž„์ด ์žˆ์–ด์•ผ ํ•˜๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. '2๊ฐœ์˜ ์ ์€ ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค. ์  3๊ฐœ ํฌํ•จ' ์ •๋ง _๊ทธ_ ํŒŒ์•…/๋””๋ฒ„๊ทธ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๊นŒ?

์–ด๋–ค ๊ฒฝ์šฐ์ด๋“  - ๋ˆ„๊ฐ€ ์ตœ์ข… ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๊ณ  ์ด๋ฅผ ๋งˆ๋ฌด๋ฆฌ ์ง“๊ธฐ ์œ„ํ•œ ๋‹ค์Œ ๋‹จ๊ณ„๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? 18๊ฐœ์›” ๋™์•ˆ ์„ธ ๋ฒˆ์งธ ์บ๋ฆญํ„ฐ์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜๋Š” ๊ฒƒ์€ ์•„๋งˆ๋„ ํ˜„ ์‹œ์ ์—์„œ _๋Š”_ ๋ฐ”์ดํฌ์‰๋”ฉ ์ž…๋‹ˆ๋‹ค ๐Ÿ˜„

๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ^๋Š” ๋‹จ๊ณ„์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.
IMO ์„œ๋กœ ๋ถˆ์ผ์น˜ op= ์šฐ๋ฆฌ๊ฐ€ ์ด์ œ๊นŒ์ง€์žˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ๋ฐฉ๋ฒ•์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์šด์˜์ž๋Š” ์•„๋ฌด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค a ..= b ์˜ ์˜๋ฏธ์—์„œ a = a .. b ๋ถ€ํ„ฐ .. ์žˆ๋‹ค๊ฐ€ ์—ฐ์‚ฐ์ž๊ฐ€ ์•„๋‹ˆ๋ผ Range๋ฅผ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌ๋ฌธ์  ์„คํƒ•(๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ๋ชจ๋“  ์—ฐ์‚ฐ์ด op= ๋ฐ .. ํ˜•์‹์„ ์ž๋™์œผ๋กœ ๊ฐ€์ ธ์˜ค๋Š” ์ผ๋ฐ˜์ ์ธ ์—ฐ์‚ฐ ์˜ค๋ฒ„๋กœ๋”ฉ ์ฒด๊ณ„๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค).
๋‚˜๋Š” ..= ์ด ๋ฌธ์„œ๋ฅผ ๋ณด์ง€ ์•Š๊ณ  ๋ช…ํ™•ํ•˜๋‹ค๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ผ๋‹จ ์‚ฌ๋žŒ๋“ค์ด ๋ฌธ์„œ๋ฅผ ๋ณด๋ฉด ์•”๊ธฐํ•˜๊ธฐ ๋” ์‰ฝ๊ณ  ์–ด์จŒ๋“  ๋ฌธ์„œ๋ฅผ ๋ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@nikomatsakis ์˜ ์ง€๋ช…์„ ๊ฐ์•ˆํ•  ๋•Œ ๋‹ค์Œ ์ฃผ lang-team ํšŒ์˜์—์„œ ์ด์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜๊ณ  ๊ทธ ์‹œ์ ์—์„œ ์ „ํ™”๋ฅผ ๊ฑธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์ด ์ „ํ™”๋ฅผ ๊ฑธ๊ณ  ๋ฐ”์ดํฌ ์…ฐ๋”ฉ์„ ๋๋‚ด๊ธฐ ์œ„ํ•ด ๋žญ ํŒ€์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋˜ํ•œ ..^ ๊ฐ€ ์ปจํ…์ŠคํŠธ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ฒ”์œ„ ๊ตฌ๋ฌธ์ด๋ผ๋Š” ๊ฒƒ์„ ์ธ์‹ํ•˜๋”๋ผ๋„ ์ฒ˜์Œ์—๋Š” ๊ทธ๊ฒƒ์ด ํฌ๊ด„์ ์ธ์ง€ ๋ฐฐํƒ€์ ์ธ์ง€ ์ง๊ด€์ ์œผ๋กœ ์•Œ ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ๊ฑฑ์ •ํ•ฉ๋‹ˆ๋‹ค.

๋™์˜. ์‚ฌ์‹ค, ๋‚˜๋Š” ์ด๋ฏธ Perl 6์—์„œ ์ด ๊ตฌ๋ฌธ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ œ์•ˆ์˜ ๋ฐ˜๋Œ€๋Š” ๋ฐฐํƒ€์ ์ด๋ผ๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.

@solson ๊ทธ๊ฒƒ์— ๋Œ€ํ•œ ๋งค์šฐ ๊ฐ•๋ ฅํ•œ ์ฃผ์žฅ์ž…๋‹ˆ๋‹ค.

Perl์€ ..๊ฐ€ ํฌ๊ด„์ ์ธ ์˜๋ฏธ๋ฅผ ๊ฐ–๋Š” ์™„์ „ํžˆ ์ผ๋ฐ˜์ ์ธ ๊ตฌ๋ฌธ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค(๋‘˜ ๋‹ค
์ธก๋ฉด) ๋ฐ ์–‘์ชฝ์˜ ^๋Š” ํ•ด๋‹น ๋ฐ”์ธ๋”ฉ์„ ๋ฐฐํƒ€์ ์œผ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

2017๋…„ 3์›” 18์ผ ํ† ์š”์ผ ์˜คํ›„ 6์‹œ 51๋ถ„, Josh Triplett [email protected]
์ผ๋‹ค:

@solson https://github.com/solson ๋งค์šฐ ์„ค๋“๋ ฅ ์žˆ๋Š” ์ฃผ์žฅ์ž…๋‹ˆ๋‹ค.
๋ฐ˜๋Œ€ํ•ฉ๋‹ˆ๋‹ค.

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/rust-lang/rust/issues/28237#issuecomment-287580739 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AAC3n7Fnn1_t9BkYOhfS-7oCaGlVff2aks5rnF_5gaJpZM4F4LbW
.

์ฃ„์†กํ•˜์ง€๋งŒ @rust-lang/lang ํšŒ์˜์—์„œ ์ด ๋ฌธ์ œ๋ฅผ ๋…ผ์˜ํ–ˆ์„ ๋•Œ ํ•ฉ์˜์— ๋„๋‹ฌํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. @withoutboats ๋Š” ํŠนํžˆ ์ผ๋ถ€ ์‹ฌ๊ฐํ•œ ์˜ˆ์•ฝ์ด ์žˆ์–ด ์Šค์Šค๋กœ ๋ฐฉ์†กํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ๋…ผ์˜ํ•œ ๋ช‡ ๊ฐ€์ง€ ์ฃผ์š” ์‚ฌํ•ญ:

  • ํ‘œํ˜„์‹๊ณผ ํŒจํ„ด์— ํฌ๊ด„์ ์ธ ๋ฒ”์œ„ ๊ตฌ๋ฌธ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ๋™์ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    • ์ฆ‰, x ..= y ์ฑ„ํƒํ•˜๋ฉด ๊ธฐ์กด x...y ํŒจํ„ด ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

  • ์œ ํ˜น์ ์ธ ์˜ต์…˜์€ "์•„๋ฌด๊ฒƒ๋„ ํ•˜์ง€ ์•Š๊ณ " (x..y).inclusive() ๋˜๋Š” ์ด์™€ ์œ ์‚ฌํ•œ ๊ฒƒ์„ ์“ฐ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํŒจํ„ด์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค( x...y ). ์ด๊ฒƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ช‡ ๊ฐ€์ง€ ์งˆ๋ฌธ์„ ์ œ๊ธฐํ•ฉ๋‹ˆ๋‹ค.

    • ์šฐ๋ฆฌ๋Š” ์—ฌ์ „ํžˆ ๋…์ ์ ์ธ ๋ฒ”์œ„ ํŒจํ„ด์„ ์›ํ•ฉ๋‹ˆ๊นŒ? ์˜ˆ: match 3 { 1..3 => false, .. }



      • ๊ทธ๋ ‡๋‹ค๋ฉด ๋™์ผํ•œ ์ž ์žฌ์  ํ˜ผ๋ž€์ด ์žˆ์Šต๋‹ˆ๋‹ค!



    • @withoutboats ๋Š” ์šฐ๋ฆฌ๊ฐ€ ๊ทธ๋Ÿฐ ํŒจํ„ด์„ ์›ํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‚˜์™€ @joshtriplett ๋Š” ํšŒ์˜์  ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ๋‘˜ ๋‹ค ๊ทธ๋Ÿฐ ๊ฒƒ๋“ค์ด ๋‹น์‹ ์ด ์›ํ•˜๊ธฐ ์ „๊นŒ์ง€๋Š” ์•„๋ฌด ๊ด€๋ จ์ด ์—†์–ด ๋ณด์ธ๋‹ค๊ฐ€ ์ ˆ๋Œ€์ ์œผ๋กœ ํ•„์š” ํ•˜๋‹ค๊ณ  ๋Š๋ผ๊ธฐ ์ „๊นŒ์ง€๋Š” ๊ทธ๋Ÿฐ ์ข…๋ฅ˜์˜ ๊ฒƒ์ด๋ผ๋Š” ์˜๊ฒฌ์„ ๊ฐ–๊ณ  ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™์•„์š”. =)

  • ๋ฐฐํƒ€์  ๋ฒ”์œ„ ํŒจํ„ด๊ณผ ๊ด€๋ จ๋œ ๋˜ ๋‹ค๋ฅธ ๋ฌธ์ œ๋Š” (๋˜ํ•œ ๋ถˆ์•ˆ์ •ํ•œ) ์Šฌ๋ผ์ด์Šค ํŒจํ„ด ๊ณผ ์ œ๋Œ€๋กœ ์ƒํ˜ธ ์ž‘์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(์ž์„ธํ•œ ๋‚ด์šฉ์€ https://github.com/rust-lang/rust/issues/23121 ์ฐธ์กฐ).

์ด๋ฒˆ ํ† ๋ก ์„ ํ†ตํ•ด ๋‚˜์˜จ ํ•œ ๊ฐ€์ง€๋Š” ์ƒ์ถฉ ๋˜๋Š”

  • ๋ฐฐํƒ€์  ๋ฒ”์œ„ ํ‘œํ˜„์‹ ์€ ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?
  • ๊ธฐ์กด ๋ฐฐํƒ€์  ๋ฒ”์œ„ ํŒจํ„ด ์„ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?
  • ํฌ๊ด„์ ์ธ ๋ฒ”์œ„ ํŒจํ„ด ์— ๋Œ€ํ•ด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?
  • ์Šฌ๋ผ์ด์Šค ํŒจํ„ด ์€ ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

์ด ๊ธ€์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ๋Œ€ํ™”์˜ ๋งค ์ˆœ๊ฐ„๋งˆ๋‹ค ์šฐ๋ฆฌ ๋ชจ๋‘๊ฐ€ ์‹ค์ œ๋กœ ๊ฐ™์€ ๊ฐœ๋…์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ๋‹ค๋Š” ํ™•์‹ ์ด ๋“ค์ง€ ์•Š์•˜๋‹ค๊ณ  ๋งํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, Niko๋Š” "๋ฐฐํƒ€์  ๋ฒ”์œ„ ํŒจํ„ด์€ ๋‹น์‹ ์ด ์›ํ•˜๊ธฐ ์ „๊นŒ์ง€๋Š” ๊ด€๋ จ์ด ์—†์–ด ๋ณด์ธ๋‹ค"๊ณ  ๋งํ–ˆ์ง€๋งŒ, ๋‚˜๋Š” ๊ทธ ๋‹น์‹œ Niko์™€ Josh๊ฐ€ ํฌ๊ด„์ ์ธ ๋ฒ”์œ„ ํ‘œํ˜„์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

(๊ทธ๋ฆฌ๊ณ  ๋‚˜๋Š” Niko์˜ ๊ฒŒ์‹œ๋ฌผ์˜ ๋งˆ์ง€๋ง‰ ๋ถ€๋ถ„์—์„œ ํ˜„์žฌ "๋ฐฐํƒ€์  ๋ฒ”์œ„ ํ‘œํ˜„์‹"์ด๋ผ๊ณ  ์ฝ๋Š” ์ฒซ ๋ฒˆ์งธ ๊ธ€๋จธ๋ฆฌ ๊ธฐํ˜ธ๊ฐ€ "ํฌํ•จ ๋ฒ”์œ„ ํ‘œํ˜„์‹"์ด๋ผ๊ณ  ๋งํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.)

TL;DR ๋‚ด ์˜๊ฒฌ

๋ฒ”์œ„ ํ‘œํ˜„์‹ ์ •๋ณด:

  • ... ๋˜๋Š” ..= ํฌํ•จ ๋ฒ”์œ„ ํ‘œํ˜„์‹์— ๋Œ€ํ•œ ๊ตฌ๋ฌธ์„ ๋„์ž… ํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.
  • ์ „์ฃผ๊ณก์— ๋ฐฐํƒ€์  ๋ฒ”์œ„ ๊ฐ’์„ ์ทจํ•˜๊ณ  ํฌํ•จ ๋ฒ”์œ„ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ inclusive(0..10) (์ด๋ฆ„์€ ์ž์ „๊ฑฐ๋ฅผ ํƒˆ ์ˆ˜ ์žˆ์Œ)๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

๋ฒ”์œ„ ํŒจํ„ด ์ •๋ณด:

  • ๋…์ ์ ์ธ ๋ฒ”์œ„ ํŒจํ„ด์„ ๋„์ž…ํ•˜๊ฑฐ๋‚˜ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ๋“  ์ƒ์„ฑํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

๋‹ค์‹œ ๋งํ•ด์„œ, ์šฐ๋ฆฌ๊ฐ€ ํ•ด์•ผ ํ•˜๋Š” ์œ ์ผํ•œ ๋ฌผ์งˆ์  ๋ณ€๊ฒฝ์€ libs ๋ณ€๊ฒฝ์ž…๋‹ˆ๋‹ค: ์„œ๊ณก์— ํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค.

๋ฒ”์œ„ ํ‘œํ˜„์‹

๋‚ด ์ฃผ์žฅ์˜ ๊ธฐ๋ณธ์€ ํฌ๊ด„์  ๋ฒ”์œ„ ๊ฐ’์„ ๋ฐ˜๋ณตํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ด์ง€ ์•Š์€ ์š”๊ตฌ ์‚ฌํ•ญ์ด๋ผ๋Š” ์‚ฌ์‹ค์ž…๋‹ˆ๋‹ค. RFC๊ฐ€ 18๊ฐœ์›” ์ „์— ๋ฐ›์•„๋“ค์—ฌ์กŒ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์šฐ๋ฆฌ๋Š” ์—ฌ์ „ํžˆ ์ด ๊ธฐ๋Šฅ์„ ์•ˆ์ •ํ™”ํ•˜์ง€ ๋ชปํ–ˆ๋‹ค๋Š” ์‚ฌ์‹ค์—์„œ ์ด๊ฒƒ์ด ์ž…์ฆ๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ตฌํ˜„ ๋ฌธ์ œ ๋•Œ๋ฌธ์ด ์•„๋‹ˆ๋ผ ์šฐ๋ฆฌ๊ฐ€ ๊ตํ™˜์— ๋งŒ์กฑํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

ํฌ๊ด„์ ์ธ ๋ฒ”์œ„ ํ‘œํ˜„์‹์€ ์ด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์„ ์ง€์›ํ•ด์•ผ ํ•  ๋งŒํผ ์ถฉ๋ถ„ํžˆ ์ž์ฃผ ํ•„์š”ํ•˜์ง€๋งŒ ์ง€๊ธˆ๊นŒ์ง€ ๋…ผ์˜ํ•œ ๊ตฌ๋ฌธ์˜ ๋‹จ์ ์„ ๊ทน๋ณตํ•  ๋งŒํผ ์ž์ฃผ๋Š” ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

ํŠนํžˆ ๋ชจ๋“  ๊ตฌ๋ฌธ ์†”๋ฃจ์…˜์ด ๊ณต์œ ํ•˜๋Š” ๋‹จ์ ์€ ์–ด๋Š ๊ฒƒ๋„ ์‹ค์ œ๋กœ ์ž์ฒด ๋ฌธ์„œํ™”๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. 0...10 ๋˜๋Š” 0..=10 ๊ฐ€ ํฌํ•จ ๋ฒ”์œ„ ํ‘œํ˜„์‹์ด๋ผ๋Š” ๊ฒƒ์€ ๋น„๊ต์  ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋น„๊ต์  ๋“œ๋ฌผ๊ฒŒ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฒ˜์Œ ์ ‘ํ•˜๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” ๊ฑธ๋ฆผ๋Œ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ฆ‰, ์‚ฌ์šฉ์ž๊ฐ€ "์ •์ƒ์ ์ธ" .. ๋ฒ”์œ„๋ฅผ ๋‹ค๋ฃจ์ง€ ์•Š๋Š”๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ์•„์ฐจ๋ฆฌ๊ธฐ๋ผ๋„ ํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ด๊ฒƒ์€ ... ์˜ ํฐ ๋ฌธ์ œ์ด์ง€๋งŒ ..= ๊ฐ€ ๋ฌธ์ œ๋ฅผ ์™„์ „ํžˆ ์ œ๊ฑฐ ํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ฅผ ํ›‘์–ด๋ณผ ๋•Œ ํ•˜๋‚˜์˜ = ๋ฌธ์ž(๋˜๋Š” ^ ๋˜๋Š” : ๋˜๋Š” ๊ธฐํƒ€)๋ฅผ ๋†“์น˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. ์ถ”๊ฐ€ . ๋งŒํผ ์‰ฝ์ง€๋Š” ์•Š์ง€๋งŒ ์ถฉ๋ถ„ํžˆ ๋ˆˆ์— ๋„๋Š”์ง€ ํ™•์‹ ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์‹ค์ œ๋กœ ... ์™€ ..= ์‚ฌ์ด์— "๋ˆˆ์— ๋„๋Š” ๋Œ€ ๋ช…ํ™•์„ฑ" ํŠธ๋ ˆ์ด๋“œ ์˜คํ”„๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์˜ ๋” ๋ถ„๋ช… ์–ด๋–ป๊ฒŒ ์ƒ๊ฐ ... ๋ณด๋‹ค (๋‹น์‹ ์ด ๋‘ ๊ตฌ๋ฌธ์€ ๋ฐ˜๋Œ€์˜ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๊ณ  ๋ฃจ๋น„์—์„œ ์˜ค๋Š” ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด) ์ˆ˜๋‹จ์„ ..= ,ํ•˜์ง€๋งŒ ํ™•์‹คํžˆ ๋œ ๋ˆˆ์— ๋„๋Š”.

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

๋˜ํ•œ ๊ตฌ๋ฌธ ๋ถ„์„ ๋ฐ ํ† ํฐํ™” ๋ฌธ์ œ๋ฅผ ํ”ผํ•˜๊ณ  (0..10).filter ๋“ฑ์„ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š” (๋งค์šฐ ์„ฑ๊ฐ€์‹ ) ๋ฒ”์œ„ ๋Œ€ ๋ฉ”์„œ๋“œ ์šฐ์„  ์ˆœ์œ„ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ์‚ฌ์šฉ์ž๋ฅผ ๋•์Šต๋‹ˆ๋‹ค.

๋ฒ”์œ„ ํŒจํ„ด

.. ์ถ”๊ฐ€ํ•˜๋ฉด ์•ˆ ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ์ฃผ๋œ ์ด์œ ๋Š” ์Šฌ๋ผ์ด์Šค ํŒจํ„ด ์ฃผ๋ณ€์— ๋ชจํ˜ธ์„ฑ์ด ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ์œ ์šฉํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ํ’€์ง€ ์•Š์•„๋„ ๊ทธ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ์‹ถ๋‹ค.

๋‘ ๋ฒˆ์งธ ์ด์œ ๋Š” ๊ทธ๋“ค์ด ๊ฝค ๋‚˜์œ ์Šคํƒ€์ผ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค(๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์€ ๋™์˜ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์••๋‹ˆ๋‹ค). ์˜ˆ๋ฅผ ๋“ค์–ด:

if let 1..10 = x { .. }

10 ๊ฐ€ ํฌํ•จ๋œ ํŒจํ„ด๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์ด ํ˜ผ๋ž€์Šค๋Ÿฝ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. Niko๋Š” ์ด๊ฒƒ์ด 10 ์‚ฐ์ถœํ•˜์ง€ ์•Š๋Š” ๋ฐฐํƒ€์  ๋ฒ”์œ„ ํ‘œํ˜„์‹๊ณผ ์‹ค์ œ๋กœ ๋‹ค๋ฅด์ง€ ์•Š๋‹ค๊ณ  ์–ธ๊ธ‰ํ–ˆ์ง€๋งŒ, ์ €๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋ฐฐํƒ€์  ๋ฒ”์œ„. Rust์— ๋“ค์–ด์˜ค๋ฉด์„œ ์ €๋Š” ๋ฐ˜๋ณต ๋ฐ ์Šฌ๋ผ์ด์‹ฑ ๋ฒ”์œ„๊ฐ€ ๋ฐฐํƒ€์ ์ผ ๊ฒƒ์ด๋ผ๊ณ  ์˜ˆ์ƒํ–ˆ์ง€๋งŒ ํŒจํ„ด์— ๋Œ€ํ•ด์„œ๋Š” ๊ทธ๋Ÿฐ ๊ธฐ๋Œ€๋ฅผ ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ํ‘œํ˜„์‹์˜ .. / ... ๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” "off-by-one" ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

Niko๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธ€์„ ์“ฐ๊ณ  ์‹ถ๋‹ค๊ณ  ์–ธ๊ธ‰ํ•œ ๊ฒƒ์œผ๋กœ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

match x {
    0..10 => { ... }
    10..20 => { ... }
}

๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ์ •๋ง๋กœ ๊ฐ•๋ ฅํ•˜๊ฒŒ ๋‹ค์Œ์„๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

match x {
    0...9 => { ... }
    10...19 => { .. }
}

์–ด์จŒ๋“ , ๋‚˜๋Š” Niko๊ฐ€ ๋•Œ๋•Œ๋กœ ์ด๊ฒƒ์ด "์ ˆ๋Œ€์ ์œผ๋กœ ํ•„์š”ํ•˜๋‹ค"๊ณ  ์ƒ๊ฐํ•œ๋‹ค๋Š” ์˜๋ฏธ์— ๋†€๋ž์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋” ๋งŽ์€ ๋ฐ˜๋ก ์„ ๋“ฃ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๋“ค์€ constexpr์ด์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜์—๊ฒŒ '์ ˆ๋Œ€์ ์œผ๋กœ ํ•„์š”ํ•œ' ๊ฒƒ๋ณด๋‹ค '์žˆ์œผ๋ฉด ์ข‹์€ ๊ฒƒ'์— ํ›จ์”ฌ ๋” ๊ฐ€๊น์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ํฌ๊ด„์ ์ธ ๋ฒ”์œ„ ํ‘œํ˜„๋ณด๋‹ค ๋…์ ์ ์ธ ๋ฒ”์œ„ ํŒจํ„ด์— ํ”๋“ค๋ฆฌ๋Š” ๊ฒƒ์ด ํ™•์‹คํžˆ ๋” ์‰ฝ๋‹ค๊ณ  ๋Š๋‚๋‹ˆ๋‹ค.

์ผ๊ด€์„ฑ ์ฃผ์žฅ

Niko๋Š” ์ผ๊ด€์„ฑ ๋•Œ๋ฌธ์— ํ‘œํ˜„์‹๊ณผ ํŒจํ„ด ๋ชจ๋‘์—์„œ .. ๋ฐ ... ๋ฅผ ๋ชจ๋‘ ๊ฐ–๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค๊ณ  ์–ธ๊ธ‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด ์ฃผ์žฅ์— ์ „ํ˜€ ๋™์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฒ”์œ„๋ฅผ ๋ฐ˜๋ณตํ•˜๊ณ  ๋ฒ”์œ„๋ฅผ ์ผ์น˜์‹œํ‚ค๋Š” ๊ฒƒ์€ ์‹ค์ œ๋กœ ์œ ์‚ฌํ•œ ์ž‘์—…์ด ์•„๋‹ˆ๋ฉฐ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์— ์ฐจ์ด๊ฐ€ ์žˆ์Œ์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ๊ตฌํ˜„ ์—ฐ๊ฒฐ์กฐ์ฐจ ์—†์Šต๋‹ˆ๋‹ค. 1..10 ๋Š” Range ๊ฐ’์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐ˜๋ฉด 1...10 ๋Š” ์ •์ˆ˜ ๊ฐ’๊ณผ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๋Œ€์นญ ํ‘œํ˜„์‹/ํŒจํ„ด ๊ตฌ๋ฌธ์ด ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌ์กฐํ™”/ํ•ด์ฒดํ™” ์—ฐ๊ฒฐ์ด ์žˆ๋Š” ๊ฒƒ๊ณผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

์œ ์‚ฌ์„ฑ์„ ๊ฐ•์กฐํ•˜๋Š” "๋ฒ”์œ„ ํŒจํ„ด" ๐Ÿค“๋ณด๋‹ค ํŒจํ„ด์„ "๋„๋ฉ”์ธ ํŒจํ„ด"์ด๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๊ฒƒ์ด ๊ธฐ์ˆ ์ ์œผ๋กœ ๋” ์ •ํ™•ํ•ด ๋ณด์ž…๋‹ˆ๋‹ค.

@withoutboats

์˜ˆ๋ฅผ ๋“ค์–ด, Niko๋Š” "๋ฐฐํƒ€์  ๋ฒ”์œ„ ํŒจํ„ด์€ ๋‹น์‹ ์ด ์›ํ•˜๊ธฐ ์ „๊นŒ์ง€๋Š” ๊ด€๋ จ์ด ์—†์–ด ๋ณด์ธ๋‹ค"๊ณ  ๋งํ–ˆ์ง€๋งŒ, ๋‚˜๋Š” ๊ทธ ๋‹น์‹œ Niko์™€ Josh๊ฐ€ ํฌ๊ด„์ ์ธ ๋ฒ”์œ„ ํ‘œํ˜„์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

์ œ ์ž…์žฅ์—์„œ๋Š” ๋‹ค์–‘ํ•œ ๊ฒฝ์šฐ์— ํ•„์š”ํ•œ ๋ฐฐํƒ€์  ๋ฒ”์œ„์™€ ํฌ๊ด„์  ๋ฒ”์œ„๋ฅผ ๋ชจ๋‘ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค(์•ˆ์ •์ ์ธ Rust์—์„œ ์ž‘์—…ํ•˜๊ธฐ ์œ„ํ•ด ๋‘ ๊ฒฝ์šฐ ๋ชจ๋‘์— ๋Œ€ํ•ด ๋ฐฐํƒ€์  ๋ฒ”์œ„๋ฅผ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ ์ƒ๋‹จ์— +1 ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฒฝ๊ณ„). ํŒจํ„ด๊ณผ ํ‘œํ˜„ ๋ชจ๋‘์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

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

ํŠนํžˆ ๋ชจ๋“  ๊ตฌ๋ฌธ ์†”๋ฃจ์…˜์ด ๊ณต์œ ํ•˜๋Š” ๋‹จ์ ์€ ์–ด๋Š ๊ฒƒ๋„ ์‹ค์ œ๋กœ ์ž์ฒด ๋ฌธ์„œํ™”๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. 0...10 ๋˜๋Š” 0..=10์ด ํฌํ•จ ๋ฒ”์œ„ ํ‘œํ˜„์‹์ด๋ผ๋Š” ๊ฒƒ์€ ๋น„๊ต์  ๋ถ„๋ช…ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋น„๊ต์  ๋“œ๋ฌผ๊ฒŒ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฒ˜์Œ ์ ‘ํ•˜๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” ๊ฑธ๋ฆผ๋Œ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋œ ์ปดํŒฉํŠธํ•œ ๊ตฌ๋ฌธ์— ๋Œ€ํ•ด ์ด์˜๊ฐ€ ์—†์„ ์ •๋„๋กœ ์ถฉ๋ถ„ํžˆ ๋“œ๋ฌผ๊ฒŒ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ‘œํ˜„์‹๊ณผ ํŒจํ„ด ๋ชจ๋‘์—์„œ ํฌ๊ด„์ ์ด๊ณ  ๋ฐฐํƒ€์ ์ธ ๋ฒ”์œ„๋ฅผ ์ž‘์„ฑ ํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ฐ–๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ํฌ๊ด„์ ์ธ ๋ฒ”์œ„ ํŒจํ„ด์„ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ๋งคํฌ๋กœ ๋˜๋Š” ์ด์™€ ์œ ์‚ฌํ•œ ๊ฒƒ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋Š” ์ƒ๊ด€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@joshtriplett ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋งํ•  ๋•Œ ์ •๋ง ๋ช…ํ™•ํ•˜๊ฒŒ ํ•˜๊ณ  ์‹ถ์€ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‹ค์–‘ํ•œ ์‹œ๊ฐ„์— ํ•„์š”ํ•œ ๋ฐฐํƒ€์  ๋ฒ”์œ„์™€ ํฌ๊ด„์  ๋ฒ”์œ„๋ฅผ ๋ชจ๋‘ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค(์•ˆ์ •์ ์ธ Rust์—์„œ ์ž‘์—…ํ•˜๊ธฐ ์œ„ํ•ด ๋‘ ๊ฒฝ์šฐ ๋ชจ๋‘์— ๋Œ€ํ•ด ๋ฐฐํƒ€์  ๋ฒ”์œ„๋ฅผ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ ์ƒํ•œ์„ ์—์„œ +1๋กœ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค).

๋‹น์‹ ์ด ํ‘œํ˜„ ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ๋ถ„๋ช…ํ•œ ๊ฒƒ ๊ฐ™์ง€๋งŒ ์ธ์šฉํ•œ ์„น์…˜์€ ํŒจํ„ด ์— ๊ด€ํ•œ ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค(๋‹ค์Œ ๋‹จ๋ฝ์—์„œ ํŒจํ„ด์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ, ๋‚˜๋Š” ๊ทธ ๋‹จ๋ฝ์—์„œ ๋‹ค๋ฃจ์ง€ ์•Š๋Š” "ํ•„์š”์„ฑ" ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋ฌป๊ณ  ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค ๐Ÿ˜ƒ) .

ํŒจํ„ด์˜ ํ˜„์žฌ ์ƒํƒœ๋Š” x...y ํ˜•์‹์˜ ํฌํ•จ ๋ฒ”์œ„ ํŒจํ„ด๋งŒ ์ง€์›ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋…์  ๋ฒ”์œ„ ํŒจํ„ด ์ด ์—†๋Š” ๊ฒƒ์ด ์ •๋ง ์‹ค๋ง์Šค๋Ÿฌ์› ๋Š”์ง€ ์—ฌ๋ถ€์— ๋Œ€ํ•ด ๋” ์ด์•ผ๊ธฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@withoutboats

๋…์  ๋ฒ”์œ„ ํŒจํ„ด์ด ์—†๋Š” ๊ฒƒ์ด ์ •๋ง ์‹ค๋ง์Šค๋Ÿฌ์› ๋Š”์ง€ ์—ฌ๋ถ€์— ๋Œ€ํ•ด ๋” ์ด์•ผ๊ธฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ฐ™์€ ๊ฒƒ

    match offset {
        0x0200 .. 0x0280 => { /* GICD_ISPENDR<n> */ }
        0x0280 .. 0x0300 => { /* GICD_ICPENDR<n> */ }
        0x0300 .. 0x0380 => { /* GICD_ISACTIVER<n> */ }
        0x0380 .. 0x0400 => { /* GICD_ICACTIVER<n> */ }
        0x0400 .. 0x0800 => { /* GICD_IPRIORITYR<n> */ }
    }

๋Œ€

    match offset {
        0x0200 ... 0x027C => { /* GICD_ISPENDR<n> */ }
        0x0280 ... 0x02FC => { /* GICD_ICPENDR<n> */ }
        0x0300 ... 0x037C => { /* GICD_ISACTIVER<n> */ }
        0x0380 ... 0x03FC => { /* GICD_ICACTIVER<n> */ }
        0x0400 ... 0x07FC => { /* GICD_IPRIORITYR<n> */ }
    }

๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ํŠน๋ณ„ํžˆ ์‹ค๋ง์Šค๋Ÿฝ๋‹ค๊ณ  ๋งํ•˜์ง€๋Š” ์•Š๊ฒ ์ง€๋งŒ, ์ฒซ ๋ฒˆ์งธ ๊ฒƒ์ด ํ™•์‹คํžˆ ๋” ๋ฉ‹์ง€๊ฒŒ ๋ณด์ž…๋‹ˆ๋‹ค.

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

@petrochenkov ๋‚˜๋Š” ๊ทธ๊ฒƒ๋“ค์ด C ์•„๋‹ˆ๋ผ F ๋กœ ๋๋‚˜์•ผ ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๊นŒ?

16์ง„์ˆ˜ ๋ฒ”์œ„ ํŒจํ„ด(์˜ˆ: 0x8000...0x9FFF => /* body */ ์—์„œ ๊ฐ™์€ ๊ฒฝ์šฐ๋ฅผ ๊ฒช์—ˆ์Šต๋‹ˆ๋‹ค. 0x8000..0xA000 ๊ฐ€ ์•ฝ๊ฐ„ ๋” ์ง๊ด€์ ์ธ ์†์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. ์ƒ๊ฐํ•  ํ•„์š” ์—†์ด ์ฆ‰์‹œ ๋ฒ”์œ„์˜ ํฌ๊ธฐ๊ฐ€ 0xA000 - 0x8000 = 0x2000 ์ด๊ณ  ๋‹ค์Œ ์ธ์ ‘ ๋ฒ”์œ„๊ฐ€ 0xA000 ์—์„œ ์‹œ์ž‘ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํฌ๊ด„์ ์ธ ๋ฒ”์œ„์—์„œ ์ด๋Ÿฌํ•œ ์‚ฌ์‹ค์„ ํ™•์ธํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ +1 ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ์ œ๊ฐ€ ๊ฐ๋‹นํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์€ ์ฐจ์ด์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐฐํƒ€์  ๋ฒ”์œ„(ํŒจํ„ด ๋ฐ ํ‘œํ˜„์‹ ๋ชจ๋‘)๊ฐ€ ์ œ ์ž‘์—…์— ๋” ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

@petrochenkov 16์ง„์ˆ˜์— ๋Œ€ํ•œ ๋…์  ๋ฒ”์œ„๋ฅผ ์„ ํ˜ธํ•˜๋Š” ์ด์œ ๋ฅผ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์•„์ง ๊ทธ๋ ‡์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์ด๊ฒƒ์€ ๋งค์šฐ YMMV ๊ฑฐ๋ž˜์ฒ˜๋Ÿผ ๋Š๊ปด์ง‘๋‹ˆ๋‹ค).

๊ทธ๋Ÿฌ๋‚˜ ์Šฌ๋ผ์ด์Šค ๊ตฌ๋ฌธ์˜ ๋ชจํ˜ธ์„ฑ์„ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ• ๊นŒ์š”?

@joshtriplett

ํฌํ•จ ๋ฒ”์œ„ ํŒจํ„ด์ด ... ํ•˜๊ณ  ๋ฐฐํƒ€์  ๋ฒ”์œ„ ํ‘œํ˜„์‹์ด .. ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์—ฌ์ „ํžˆ ๋งค์šฐ ํ˜ผ๋ž€์Šค๋Ÿฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ์˜ค๋Š˜๋‚  Rust๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์ด๋ฉฐ ์‹ฌ๊ฐํ•œ ํ˜ผ๋ž€์˜ ์›์ธ์ด ์•„๋‹Œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๊นŒ?

@solson

๋‚˜๋Š” ๊ทธ๊ฒƒ๋“ค์ด C๊ฐ€ ์•„๋‹ˆ๋ผ F๋กœ ๋๋‚  ์˜ˆ์ •์ด๋ผ๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

์•„๋‹ˆ :)
(์ด๊ฒƒ๋“ค์€ 32๋น„ํŠธ์ด๊ณ  offset ๋Š” 4์˜ ๋ฐฐ์ˆ˜์ž…๋‹ˆ๋‹ค.)

@withoutboats

16์ง„์ˆ˜์— ๋Œ€ํ•ด ๋…์ ์ ์ธ ๋ฒ”์œ„๋ฅผ ์„ ํ˜ธํ•˜๋Š” ์ด์œ ๋ฅผ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์ด ๊ฐ•๋ ฅํ•œ ์„ ํ˜ธ๋„๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ์ ์— ์œ ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์—ฌ์ „ํžˆ ๋…์ ์ ์ธ ํŒจํ„ด๊ณผ ํฌ๊ด„์ ์ธ ๋ฒ”์œ„๋ฅผ ๋ชจ๋‘ ์‚ญ์ œํ•ด๋„ ๊ดœ์ฐฎ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค(ํ•˜์ง€๋งŒ ๊ทธ ์ค‘ ํ•˜๋‚˜๋Š” ์ œ์™ธ, ๋„ˆ๋ฌด ์šฐ์Šค๊ฝ์Šค๋Ÿฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค).

๊ทธ๋Ÿฌ๋‚˜ ์Šฌ๋ผ์ด์Šค ๊ตฌ๋ฌธ์˜ ๋ชจํ˜ธ์„ฑ์„ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ• ๊นŒ์š”?

์šฉ์ดํ•˜๊ฒŒ! PATTERN.. => .. @ PATTERN

ํฌ๊ด„์ ์ธ ๋ฒ”์œ„๊ฐ€ ๋‹จ์ˆœํ•˜๊ธฐ๋ฅผ ์›ํ•˜๋Š” ์ฃผ๋œ ์ด์œ ๋Š” ๋ณ€์ˆ˜์— ์ค‘์ง€ ๊ฐ’์„ ์ „๋‹ฌํ•˜๋Š” ์ƒํ™ฉ์— ๋‘ ๋ฒˆ ์ด์ƒ ๋ถ€๋”ช์ณค๊ณ  ์ •ํ™•ํžˆ ํ•œ ๋ณ€์ˆ˜ ์œ ํ˜•์ด ๋ณด์œ ํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€๊ฐ’์ด๋ฏ€๋กœ ์œ ์ผํ•œ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ ํƒ€์ž„์— ์˜ค๋ฒ„ํ”Œ๋กœ๋ฅผ ๋ฐฐ์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ํฌํ•จ ๋ฒ”์œ„ ์‚ฌ์šฉ(๊ฐ€์žฅ ๊นจ๋—ํ•˜์ง€๋งŒ ์•ˆ์ •์ ์ด์ง€ ์•Š์Œ)
  2. + 1 ์ „์— ์—…์บ์ŠคํŒ…(๋‚ด๊ฐ€ ์ด๋ฏธ u64 ์— ์žˆ์ง€ ์•Š๊ณ  ์šฐ์•„ํ•˜์ง€ ์•Š๋‹ค๊ณ  ๊ฐ€์ •)
  3. ๊ฐ’ ์ค‘ ์ž‘์€ ๊ฐ’๊ณผ ๋ฒ”์œ„์— ๋Œ€ํ•ด ์ตœ๋Œ€๊ฐ’ ๋นผ๊ธฐ 1์„ ์ทจํ•œ ๋‹ค์Œ ์ ์ ˆํ•œ ๊ฒฝ์šฐ ์ž‘์—…์„ ํ•œ ๋ฒˆ ๋” ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๊ณ ์œ ํ•œ ๋ชฉ์ ์ด ์—†๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์— + 1 ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋Œ€์‹  ํฌ๊ด„์  ๋ฒ”์œ„๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์Šต๊ด€์„ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์€ ๋‚˜์ค‘์— cargo fuzz ... ๋ฐ + 1 ๋ณด๋‹ค ์ด๋ฆ„์— ๋” ๋งŽ์€ ๋ฌธ์ž๊ฐ€ ํฌํ•จ๋œ "๋ฐฐํƒ€์ ์—์„œ ํฌํ•จ" ๊ธฐ๋Šฅ์€ ํฌํ•จ ๋ฒ”์œ„๊ฐ€ ์Šต๊ด€์ ์œผ๋กœ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์˜ˆ์™ธ์ ์ธ ๊ฒƒ์ด๋ผ๋Š” ์ธ์ƒ์„ ์ค๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์ด ์ œ๊ฐ€ ๋ฐ˜๋Œ€ํ•˜๋Š” ๊ฐ€์žฅ ํฐ ์ด์œ  ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ํฌ๊ด„์ ์ธ ๋ฒ”์œ„๊ฐ€ ํ•ดํ‚น์ด๋ผ๋Š” ์ธ์ƒ์„ ์ „๋‹ฌํ•˜๋ฉฐ, ๋ฐฐํƒ€์ ์ธ ๋ฒ”์œ„๊ฐ€ ์‹คํŒจํ•œ ๊ฒƒ์œผ๋กœ ์ž…์ฆ๋  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

@ssokolow ํ•˜์ง€๋งŒ ๊ทธ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ์„œ๊ณก ๊ธฐ๋Šฅ์œผ๋กœ ํŽธ์•ˆํ•˜๊ฒŒ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ํฌํ•จ๋œ ๋ฒ”์œ„๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค๋Š” ์ž…์žฅ์„ ์ทจํ•˜๋Š” ์‚ฌ๋žŒ์€ ์•„๋ฌด๋„ ์—†์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ „์ฃผ๊ณก ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ @withoutboats ์•„์ด๋””์–ด๋ฅผ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค. ํฌ๊ด„์ ์ธ ๋ฒ”์œ„๊ฐ€ ๋” ์ผ๋ฐ˜์ ์ผ ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ์žฅ์†Œ๋Š” ์ •์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด btree(๋˜๋Š” ์œ ์‚ฌํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ)์—์„œ ๊ฒ€์ƒ‰ ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.

@withoutboats ๊ท€ํ•˜๊ฐ€ ์‘๋‹ตํ•˜๋Š” ๋™์•ˆ ๋‚ด ๊ฒŒ์‹œ๋ฌผ์„ ์ƒ๋‹นํžˆ ํŽธ์ง‘ํ–ˆ์ง€๋งŒ ๋‚ด๊ฐ€ ์ถ”๊ฐ€ํ•œ ์š”์ ์€ ํฌ๊ด„์ ์ธ ๋ฒ”์œ„๋ฅผ ๊ตฌ๋ฌธ์ ์œผ๋กœ 2๊ธ‰ ์‹œ๋ฏผ์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(๋ฐฐํƒ€์  ๋ฒ”์œ„์— + 1 ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๊ตฌ๋ฌธ์ด ๋” ๊น๋‹ˆ๋‹ค. ), ๊ทธ๊ฒƒ๋“ค์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ๋ฏธ๋ฌ˜ํ•œ ๋‚™๋‹ด๊ณผ "๋‚˜์ค‘์— cargo fuzz ๋ต™๊ฒ ์Šต๋‹ˆ๋‹ค" ๋ฐœ์ด์ฒ˜๋Ÿผ ๋Š๊ปด์ง‘๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ๊ฒƒ์ด ์—†๋‹ค๋ฉด, ๊ทธ๊ฒƒ์€ ํ•™์Šต์„ฑ ์‚ฌ๋งˆ๊ท€์ž…๋‹ˆ๋‹ค.

Rust๋Š” ๋ฌดํ•œํ•œ ์ •์ˆ˜ ์ง€์›์„ ์ œ๊ณตํ•˜๋Š” Python 3.x๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. Rust๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ํ•˜๋“œ์›จ์–ด ์ ˆ์ถฉ์•ˆ์„ ์ˆจ๊ธฐ์ง€ ์•Š์œผ๋ฉฐ int ๋Œ€์‹  u32 ์™€ ์นœ๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์˜ ์ผ๋ถ€๋กœ ..= ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค. (ํŠนํžˆ ์ง€๊ธˆ๊นŒ์ง€ cargo fuzz ์˜ "ํŠธ๋กœํ”ผ ์ผ€์ด์Šค"์—์„œ ์˜ค๋ฒ„ํ”Œ๋กœ/์–ธ๋”ํ”Œ๋กœ ์˜ค๋ฅ˜๊ฐ€ ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ด๋ผ๋Š” ์ ์„ ๊ฐ์•ˆํ•  ๋•Œ)

ํŽธ์ง‘: ์ด์— ๋Œ€ํ•œ ์ด๋ฉ”์ผ ์•Œ๋ฆผ์—๋งŒ ํ‘œ์‹œ๋˜๋Š” ๋น„ํŠธ๋Š” ๋ฌด์‹œํ•˜์‹ญ์‹œ์˜ค. ๋ฐฉ๊ธˆ ์ผ์–ด๋‚ฌ๊ณ  ์•„์ง ๋ชจ๋“  ์‹ค๋ฆฐ๋”์—์„œ ๋ฐœ์‚ฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” inclusive(n..m) ๋ฅผ ๋‚™๋‹ด์œผ๋กœ ๋ณด์ง€ ์•Š์Šต๋‹ˆ๋‹ค... n..(m + 1) ๋ฐ n..=m ๋ณด๋‹ค ๋‚ด ์ฝ”๋“œ๋ฅผ ์ฝ๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“œ๋Š” ๋งค์šฐ ๋ช…ํ™•ํ•œ ๊ตฌ์กฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.

n..=m ๋Š” inclusive(n..m) IMO๋ณด๋‹ค ํ•™์Šต์„ฑ ์‚ฌ๋งˆ๊ท€์— ๊ฐ€๊น์Šต๋‹ˆ๋‹ค.

๋งค์น˜์˜ ๊ฒฝ์šฐ ํŠน์ • ์œ ํ˜•์˜ ํŒจํ„ด๋ณด๋‹ค๋Š” ์ˆซ์ž ๋ฒ”์œ„๋ฅผ ์™„์ „ํžˆ ์ปค๋ฒ„ํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฐ”๋žŒ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์•„๋งˆ๋„ "์ด์ „์—์„œ ๊ณ„์†" ๊ตฌ๋ฌธ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

BTW, ์ฒซ ๋ฒˆ์งธ ํŒจํ„ด๋งŒ ์ผ์น˜ํ•˜๋ฏ€๋กœ ์‹œ์ž‘ ๋ฒˆํ˜ธ๋ฅผ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    match offset {
        0 ... 0x01FF => {}
        0 ... 0x027C => { /* GICD_ISPENDR<n> */ }
        0 ... 0x02FC => { /* GICD_ICPENDR<n> */ }
        0 ... 0x037C => { /* GICD_ISACTIVER<n> */ }
        0 ... 0x03FC => { /* GICD_ICACTIVER<n> */ }
        0 ... 0x07FC => { /* GICD_IPRIORITYR<n> */ }
    }

๋‚˜๋Š” ์ด๊ฒƒ์ด ๊ด€์ ์˜ ๋ฌธ์ œ์ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์ธ์ •ํ•˜์ง€๋งŒ:

  1. .. ๋ฐ ..= ๋ฅผ ๋ณผ ๋•Œ "ํ—ˆ. ์™œ ๊ทธ๋ ‡๊ฒŒ ์ž‘์€ ์ฐจ์ด์— ๋Œ€ํ•ด ๋‘ ๊ฐ€์ง€ ๊ตฌ๋ฌธ์ด ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค."๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. " 1..pivot ๋ฐ pivot..end " ๋Œ€ " x..=y ์—ฌ๊ธฐ์„œ y ๋Š” ๊ฐ€๋Šฅํ•œ ์ตœ๋Œ€ ๊ฐ’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."

  2. ๊ฐ€๋ณ€ ํฌ๊ธฐ ์ธก๋ฉด์—์„œ ์Šต๊ด€์ ์œผ๋กœ ์ƒ๊ฐํ•  ๋งŒํผ ์ถฉ๋ถ„ํžˆ ๊ฒฝํ—˜ํ•˜๊ธฐ ์ „์— + 1 ๋ณด๋‹ค inclusive() ์‚ฌ์šฉํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. + 1 ์ดˆ๋“ฑํ•™๊ต ๋•Œ๋ถ€ํ„ฐ ์งง๊ณ  ํƒ€์ดํ•‘ํ•˜๊ธฐ ์‰ฌ์› ๊ณ , ๊ฒฝํ—˜์ด ๋ถ€์กฑํ•œ ํ•„์ž๋Š” ๋ง์…ˆ์ด ์˜ค๋ฒ„ํ”Œ๋กœ๋ฅผ ์ผ์œผํ‚ค๋Š” ๊ฒƒ์ด ๊ฑฑ์ •๋˜์ง€ ์•Š๋Š” Python ๋ฐ JavaScript์™€ ๊ฐ™์€ ์–ธ์–ด๋กœ ์ž‘์—…ํ•˜๋Š” ๋ฐ ์ต์ˆ™ํ•ฉ๋‹ˆ๋‹ค.

ํŽธ์ง‘: ...๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๊ฐ€ ์ดˆ์ ์„ ๋งž์ถฐ์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ํฌ์ธํŠธ 1์˜ ๊ฐœ๋…์  ๊ตฌ๋ณ„์ž…๋‹ˆ๋‹ค. (์ฆ‰, "X์—์„œ ํ”ผ๋ฒ—์œผ๋กœ"์™€ "X์—์„œ ๋๊นŒ์ง€"๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ๋งˆ์Œ์—์„œ ๊ตฌ๋ณ„๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.)

@ํฌ๋ฅด๋„ฌ
๋”์ฐํ•˜๋‹ค ๐Ÿ˜„
์ด ํŠน์ •ํ•œ ๊ฒฝ์šฐ์— ๋ฒ”์œ„ ์‹œ์ž‘์€ ์ฝ”๋“œ๋ฅผ ์ฝ๋Š” ์‚ฌ๋žŒ์—๊ฒŒ ์ •๋ง ์ •๋ง ์ค‘์š”ํ•˜๋ฉฐ, ํฌ๊ด„์ /๋ฐฐํƒ€์  ๋ฒ”์œ„ ๋ฌธ์ œ๋ณด๋‹ค ํ›จ์”ฌ ๋” ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

@ssokolow +1 ๋ฅผ ๋ฌธ์ œ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ๋ฌธ์ž ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ ์˜ค๋ฒ„ํ”Œ๋กœ ๊ฐ€๋Šฅ์„ฑ์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์˜๋„๋ฅผ ์ „๋‹ฌํ•˜์ง€๋„ ์•Š์œผ๋ฉฐ ์šฐ์„ ์ˆœ์œ„ ๊ด„ํ˜ธ๋ฅผ ๋žญ๊ธ€๋งํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ชจ๋“  ๊ฒƒ์ด ๋ฌธ์ž ์ˆ˜๋ณด๋‹ค ํ›จ์”ฌ ๋” ์ค‘์š”ํ•ด ๋ณด์ž…๋‹ˆ๋‹ค.

์˜ค๋ฒ„ํ”Œ๋กœ์— ๋Œ€ํ•ด ๋ชจ๋ฅด๋Š” ์‚ฌ๋žŒ์€ ํฌํ•จ ๋ฒ”์œ„๋ฅผ ๋งŒ๋“ค๊ธฐ ์ „์— +1 ๋„๋‹ฌํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ด๋Š” ๊ตฌ๋ฌธ์— ์˜์กดํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ..= ๊ฐ€ ํ•˜๋‚˜์˜ ์‚ฌ๋ฌผ์ด๊ณ  inclusive() ๊ฐ€ ํฌํ•จ๋œ ๋ฒ”์œ„๋ฅผ ๊ตฌ์ฒด์ ์œผ๋กœ ์›ํ•˜๋Š” ์ด์œ ๋ฅผ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋Š” ๊ต์œก ๊ฐ€๋Šฅํ•œ ์ˆœ๊ฐ„์ž„์„ ๋ฐœ๊ฒฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@petrochenkov

๋‚˜๋Š” ์—ฌ์ „ํžˆ ๋…์ ์  ์ธ ํŒจํ„ด๊ณผ ํฌํ•จ ๋ฒ”์œ„ (๊ทธ๋Ÿฌ๋‚˜ ๋„ˆ๋ฌด ๋ง๋„ ์•ˆ๋˜๋Š” ๊ฒƒ ์ค‘ ํ•˜๋‚˜) ๋ชจ๋‘ ํ•˜๋ฝ๊ณผ ๊ดœ์ฐฎ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด์— ๋Œ€ํ•ด ์™œ ๊ทธ๋ ‡๊ฒŒ ๊ฐ•ํ•˜๊ฒŒ ๋Š๋ผ๋Š”์ง€ ์„ค๋ช…ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ๋ฐฐํƒ€์  ํŒจํ„ด์„ ๋ฐ›์•„๋“ค์ด๋Š” ๊ฒƒ์€ ์‚ฌ์šฉ์ž๊ฐ€ 0...10 ๋ฅผ ํ‘œํ˜„์‹์œผ๋กœ ๊ธฐ๋Œ€ํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์„ ๋ฟ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ๊ทธ๋ ‡๊ฒŒ ๋‚˜์˜์ง€ ๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

inclusive() ๋Œ€ํ•œ ๋‚ด ๋ฌธ์ œ ์ค‘ ์ผ๋ถ€๋Š” ์ด๊ฒƒ์ด "๊ทธ๋ƒฅ" ํ•จ์ˆ˜๋ผ๋Š” ์ ์ด๋ฉฐ ์‚ฌ๋žŒ๋“ค์ด Rust ๊ตฌ๋ฌธ ์ƒ‰์ธ์œผ๋กœ ์ด๋™ํ•˜์—ฌ "range" ๋˜๋Š” "iterator"๋ฅผ ๊ฒ€์ƒ‰ํ•œ ๋‹ค์Œ ROI๊ฐ€ ์ถฉ๋ถ„ํ•˜์ง€ ์•Š๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ์ผ์„ ํ• ๊นŒ๋ด ๊ฑฑ์ •๋ฉ๋‹ˆ๋‹ค. "๋ฐ˜๋ณต์ž ๋ณด๊ธฐ"๋ฅผ ์œ„ํ•ด.

("์œ ์šฉํ•œ ๊ฒƒ์„ ์ฐพ์„ ๊ธฐํšŒ๊ฐ€ ์—†์„ ๋•Œ ๊ต๊ณผ์„œ๋ฅผ ์ฝ๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค... ๋ฒ”์œ„๋ฅผ ๋ฐ˜๋ณตํ•˜๊ณ  ์ง„ํ–‰ ์ƒํ™ฉ์œผ๋กœ ๋Œ์•„๊ฐ€๊ณ  ์‹ถ์„ ๋ฟ์ž…๋‹ˆ๋‹ค.")

@withoutboats ์ธํด๋ฃจ ์‹œ๋ธŒ(a...b)๊ฐ€ ์žˆ์ง€๋งŒ ๊ฒฝ๊ธฐ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋ฉด IMO์˜ ๊ฐ€์น˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
๋‚ด๊ฐ€ ํฌํ•จ ๋ฒ”์œ„๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์ผ์น˜ ํŒจํ„ด์— ์žˆ์Šต๋‹ˆ๋‹ค!
๊ทธ๋ ‡๋‹ค๋ฉด ์™œ ... ์ œ๊ฑฐํ•˜๊ณ  ๋งค์น˜ ๋‚ด๋ถ€์™€ ์™ธ๋ถ€์—์„œ ..= ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๊นŒ?

@Boscop ์ œ์•ˆ์€ ๋งค์น˜์—์„œ ... ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํŒจํ„ด์„ ์•ˆ์ •์ ์œผ๋กœ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@ssokolow ๋Š” .. ์„น์…˜์˜ ๋ฉ”๋ชจ๋กœ ๊ฝค ์‰ฝ๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@withoutboats ํ•˜์ง€๋งŒ ๋งค์น˜์—์„œ ... ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๋Œ€์‹  ..= ์‚ฌ์šฉํ•˜์—ฌ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?
(๋งค์น˜ ์•ˆํŒŽ์—์„œ ..= ๊ฐ€ ๋˜๋„๋ก)

๋ถ€๋™ ์†Œ์ˆ˜์ ์˜ ์ˆซ์ž ๋ฒ”์œ„ ์ ์šฉ์˜ ๊ฒฝ์šฐ ๋ฐฐํƒ€์  ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ ๊ฒฝ๊ณ„ ์ค‘ ํ•˜๋‚˜๋Š” ์™„์ „ํžˆ ํฌํ•จ๋˜์ง€๋งŒ ๋‹ค๋ฅธ ๊ฒฝ๊ณ„๋Š” ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

match x {
    0.0...3.141592653589792 => 1,
    3.141592653589793...6.283185307179585 => 2,
    6.283185307179586...10.0 => 3,
    _ => 4,
}

๊ทธ๋ฆฌ๊ณ  ๊ฒน์นจ์œผ๋กœ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์€ ์˜คํžˆ๋ ค ๊ธฐ๋ถ„์ด ๋‚˜์ฉ๋‹ˆ๋‹ค(์œ„์˜ "ํŒ”์ด ์ฃผ๋ฌธ๋˜๊ธฐ ๋•Œ๋ฌธ์— -โˆž์—์„œ ๋ชจ๋“  ๊ฒƒ์„ ์‹œ์ž‘ํ•˜์‹ญ์‹œ์˜ค"์™€ ๋„๋•์ ์œผ๋กœ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค). ํ•˜๋ฃจ๊ฐ€ [00:00, 23:59:59]๊ฐ€ ์•„๋‹ˆ๋ผ [00:00, 24:00)์ด๊ธฐ ๋•Œ๋ฌธ์— ISO8601์ด T24:00์„ ํ—ˆ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ๊ฐ™์€ ๋‚ ์งœ/์‹œ๊ฐ„๋„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ๋˜๋Š” ๋ฌธ์ž์—ด, ๋˜๋Š” ํ•ฉ๋ฆฌ์„ฑ, ๋˜๋Š” ...

๋ฐฐํƒ€์ ์ด๊ฑฐ๋‚˜ ํฌํ•จ๋งŒ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ๋งค๋ฒˆ ๋ฐฐํƒ€์  ์กฐ์น˜๋ฅผ ์ทจํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

(์ œ์™ธ: ์ธ๋ฑ์‹ฑ์„ ์œ„ํ•œ 1 <= x <= N ํŒจํ„ด์€ ์‹ค์ œ๋กœ 0 < x <= N ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚ซ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ Dijkstra๊ฐ€ ๋งํ•œ ๊ฒƒ๊ณผ ๊ฐ™์€ ์ด์œ ๋กœ ๋ฐฐํƒ€์ ์ž…๋‹ˆ๋‹ค. 0 ๊ธฐ๋ฐ˜ ๋Œ€์‹  1 ๊ธฐ๋ฐ˜ ์ธ๋ฑ์‹ฑ์œผ๋กœ ์ „ํ™˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค.)

์ด ์—ฐ์‚ฐ์ž๋Š” https://github.com/rust-lang/rfcs/pull/1961์—์„œ ๋‚ด๊ฐ€ ์ œ์•ˆํ•œ ํด๋žจํ”„ ๊ธฐ๋Šฅ์— ๋งค์šฐ ๋„์›€์ด ๋˜์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์ด ์•ˆ์ •ํ™”๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์•„๋งˆ๋„ ๊ทธ ์ œ์•ˆ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ˆ˜์ •ํ•ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋Œ€์‹  ๋‘ ๊ฐœ์˜ ์ตœ์†Œ ๋ฐ ์ตœ๋Œ€ ์ธ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. InclusiveRange๋Š” ๋ถ€๋™ ์†Œ์ˆ˜์  ๊ฐ’์œผ๋กœ ์ž‘์—…ํ•  ๋•Œ๋„ ๋งค์šฐ ์œ ์šฉํ•˜๋ฏ€๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

0.0..1.0+์—ก์‹ค๋ก 

๊ทธ๊ฒƒ์ด ๋งž๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ ์ง€๊ธˆ์€ ๋ถ€๋™ ์†Œ์ˆ˜์  ์ˆซ์ž์˜ ํฌ๊ด„์ ์ธ ๋ฒ”์œ„๋ฅผ ์„ ์–ธํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉ๋ฒ•์€ ์—ก์‹ค๋ก ์ด ์•„๋‹Œ nextafter ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฆ‰ x...y == x..nextafter(y) . ieee754 ํฌ๋ ˆ์ดํŠธ๋Š” ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ ๋…ธ์ถœ

์ด๋Ÿฐ, inclusive(a..b) ๊ตฌ๋ฌธ์— ๋Œ€ํ•ด ์–ธ๊ธ‰ํ–ˆ์ง€๋งŒ ์‚ฌ์‹ค์ด ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. ์–ด์จŒ๋“ , ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์ข‹์•„ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๊ฐ€ ๋” ๋‚˜์€ ์ด๋ฆ„์„ ์ž์ „๊ฑฐ๋กœ ํƒˆ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

@durka ์ด๋ฆ„์ด ๋ถ„๋ช…ํ•ด ๋ณด์ž…๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ์šฐ๋ ค ์‚ฌํ•ญ์„ ์ž์„ธํžˆ ์„ค๋ช…ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

๊ทธ๋ž˜์„œ ํฌ๊ด„์  ์ธ ๋ฒ”์œ„๋ฅผ ์œ„ํ•ด ์šฐ๋ฆฌ๊ฐ€ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค a ... b ์—์„œ match ๋ฐ inclusive(a..b) ์ผ์น˜์˜ ์™ธ๋ถ€?
์™œ ์šฐ๋ฆฌ๋Š” ์ผ๊ด€์„ฑ์ด ์—†๊ณ  ์–ด๋””์—๋‚˜ a ..= b ๊ฐ€์งˆ ์ˆ˜ ์—†์Šต๋‹ˆ๊นŒ?

ops::{RangeInclusive, RangeToInclusive} ์ด ๊ณต์‹์ ์œผ๋กœ ์•ˆ์ •ํ™”๋˜๋Š” ๊ฒƒ์„ ๋ฐฉํ•ดํ•˜๋Š” ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

ํ˜„์žฌ ๊ฐ€์žฅ ํฐ ์žฅ์• ๋ฌผ์€ ๊ตฌ๋ฌธ์— ๋Œ€ํ•œ ๋…ผ์Ÿ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋น„๋ก ๊ทธ ๋…ผ์Ÿ์— ๊ด€๊ณ„์—†์ด ์ตœ์ข… ๊ตฌ๋ฌธ์ด ๋ฌด์—‡์ธ์ง€์— ๊ด€๊ณ„์—†์ด ํฌ๊ด„์ ์ธ ๋ฒ”์œ„๊ฐ€ ์กด์žฌํ•  ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค.

์•ˆ์ •์ ์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์ด๋Ÿฌํ•œ ์œ ํ˜•์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์œผ๋ฉฐ ์ด๋Ÿฌํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์†Œ๋น„์ž๋Š” ํŠน์ˆ˜ ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ๊ธฐ๋Šฅ ํ”Œ๋ž˜๊ทธ๋ฅผ ํ™œ์„ฑํ™”ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ๋‚  RangeInclusive ์— ๋Œ€ํ•ด ์•Œ๊ฒŒ ๋œ ํ•œ ๊ฐ€์ง€๋Š” ๋ฒ”์œ„๋ฅผ ํ—ˆ์šฉํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ์–ด๋ ค์›€์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํด๋žจํ”„ ์Šค๋ ˆ๋“œ๋Š” .clamp(1...9) ํ—ˆ์šฉ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ–ˆ์ง€๋งŒ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณด์ž…๋‹ˆ๋‹ค.

    fn clamp(self, r: RangeInclusive<Self>) -> Self where Self : Sized {
        match r {
            RangeInclusive::Empty { .. } =>
                panic!("Cannot clamp to an empty range"),
            RangeInclusive::NonEmpty { start, end } => {
                assert!(start <= end, "Cannot clamp to a degenerate range");
                if self < start { start }
                else if self > end { end }
                else { self }
            }
        }
    }

RangeInclusive::Empty ๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์€ ๋ชฉํ‘œ๊ฐ€ ๋ฉ‹์ง„ ๊ตฌ๋ฌธ์œผ๋กœ ์Œ์„ ๋ฐ›์•„๋“ค์ด๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ถˆํ•„์š”ํ•˜๋‹ค๊ณ  ๋Š๋‚๋‹ˆ๋‹ค. ์—ด๊ฑฐํ˜•์ด ์•„๋‹ˆ๋ฉด fn clamp(self, RangeInclusive { start, end }: RangeInclusive<Self>) ๊ฐ€ ๋  ์ˆ˜ ์žˆ๊ณ  ํ›จ์”ฌ ๋” ๊นจ๋—ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ถˆํ–‰ํžˆ๋„ ๋‚˜๋Š” ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๋ฌด์—‡์„ ํ•ด์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์ข‹์€ ๋‹ต์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด .into_iter() ๋ฅผ ํฌํ•จํ•˜์ง€๋งŒ ๋ฐฐํƒ€์ ์ด์ง€ ์•Š๊ฒŒ ์š”๊ตฌํ•˜๋Š” ๊ฒƒ๋„ ๋ถˆํ–‰ํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค...

๋ฌด์ž‘์œ„ ์•„์ด๋””์–ด: ... ํŒจํ„ด ๊ตฌ๋ฌธ์ด ํฌํ•จ ๋ฒ”์œ„ ์œ ํ˜•๊ณผ ์‹ค์ œ๋กœ ๊ด€๋ จ์ด ์—†๋Š”์ง€ ํ™•์ธํ•˜๋ฉด ์—ฌ๊ธฐ์—์„œ ์ œ์•ˆ๋œ ... ์™€ ๊ด€๋ จ์ด ์—†๋Š” ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ๋ฌธ์„ ํ๊ธฐํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํฌํ•จ ๋ฒ”์œ„ ํŒจํ„ด์€ | ํŒจํ„ด๊ณผ ๋” ๋ฐ€์ ‘ํ•˜๊ฒŒ ๊ด€๋ จ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ |... ๊ฐ€ ์ข‹์€ ํ›„๋ณด๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

match {
    1 | 2 | 3 => ...
    1 |... 3  => ...
}

์ตœ์ข… ๊ฒฐ๊ณผ๋Š” ํฌ๊ด„์ ์ด๊ณ  ๋ฐฐํƒ€์ ์ธ ๋ฒ”์œ„ ๊ตฌ๋ฌธ์ด ๋” ์ด์ƒ ํŒจํ„ด ์ผ์น˜์™€ 1:1 ๊ด€๊ณ„๊ฐ€ ์—†์œผ๋ฏ€๋กœ ์ผ์น˜ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@scottmcm

๋ถˆํ–‰ํžˆ๋„ ๋‚˜๋Š” ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๋ฌด์—‡์„ ํ•ด์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์ข‹์€ ๋‹ต์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด .into_iter() ๋ฅผ ํฌํ•จํ•˜์ง€๋งŒ ๋ฐฐํƒ€์ ์ด์ง€ ์•Š๊ฒŒ ์š”๊ตฌํ•˜๋Š” ๊ฒƒ๋„ ๋ถˆํ–‰ํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค...

๋นˆ ๋ฒ”์œ„์— ๋Œ€ํ•ด ๋‹นํ™ฉํ•˜๊ณ  ์Œ์„ ๋ฐ˜ํ™˜ํ•˜๋Š” range.nonempty() ์™€ ๊ฐ™์€ ๋„์šฐ๋ฏธ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋˜ํ•œ ์šฐ๋ฆฌ๋Š” ๊ตฌํ˜„ํ•  ์ˆ˜ IntoIterator ์— ๋Œ€ํ•ด RangeInclusive ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ๋„ˆ๋ฌด ๋ฉ€๋ฆฌ ์ด๋Ÿด ํ•ด์ œํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

RangeInclusive::Empty๋Š” ์–ด๋–ค ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๊นŒ? ํฌํ•จ ๋ฒ”์œ„์— ๋นˆ ๋ฒ”์œ„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์–ด๋–ป๊ฒŒ ์ž‘์„ฑํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? (์ด๋ฏธ "5์—์„œ 4๊นŒ์ง€์˜ ๋ฒ”์œ„"์™€ ๊ฐ™์€ ๊ฒƒ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์— ์œ ์˜ํ•˜์‹ญ์‹œ์˜ค. ์ด ๋ฐ˜๋ณต์€ ์•„๋งˆ๋„ ๋น„์–ด ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ์ทจ๊ธ‰ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.)

@joshtriplett ์ฃผ์š” ์‚ฌ๋ก€๋Š” ์˜ค๋ฒ„ํ”Œ๋กœ์ด์ง€๋งŒ ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

@joshtriplett start > end ์‹ค์ œ๋กœ 0u8...255u8 ๋ผ๋Š” ์ค‘์š”ํ•œ ๊ฒฝ์šฐ์—์„œ ๋นˆ ํฌํ•จ ๋ฒ”์œ„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ๋„์ฐฉํ•˜๋ฉด 255u8...255u8 ์™€ ์‹œ๋„ .next() ๋ฅผ, ๋‹น์‹ ๋„ ํŒจ๋‹‰์„ ์–ป๊ฑฐ๋‚˜ ๋ฐ”๊ฟˆ ๊ฒƒ 0u8...255u8 ๋น„์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋Œ€์‹  ๊ทธ ์‹œ์ ์—์„œ Empty ๋ณ€ํ˜•์œผ๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

@solson ์•„, ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

(๋‚˜๋Š” ๋‹น์‹ ์ด ๋ชจ๋“  ๊ฒฝ์šฐ์— 255u8 ๋ฅผ ์˜๋ฏธํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.)

(๋‚˜๋Š” ๋‹น์‹ ์ด ๊ทธ ๋ชจ๋“  ๊ฒฝ์šฐ์— 255u8์„ ์˜๋ฏธํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.)

๋„ค, ๊ณ ๋งˆ์›Œ์š”. ์ˆ˜์ •๋จ.

@solson ๊ทธ๋Ÿฌ๋‚˜ ์ด ๊ฒฝ์šฐ 0๊ณผ 255๋ฅผ ๊ตํ™˜ํ•˜์—ฌ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@clarcharr ์‚ฌ์‹ค์ž…๋‹ˆ๋‹ค. .next() ํ•ญ์ƒ Empty ๋ฒ”์œ„์˜ ์ƒ์„ฑ์„ ํŠน์ˆ˜ ์ผ€์ด์Šคํ•ด์•ผ ํ•˜๋ฏ€๋กœ ํ•ญ์ƒ ๋น„์–ด ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๋Š” ๋ฒ”์œ„๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ์ธ์ ์œผ๋กœ ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋นˆ ๋ฒ”์œ„๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋” ๋‚˜์€ ๋ฐฉ๋ฒ•์„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ด ์Šค๋ ˆ๋“œ๋Š” 1๋…„ ๋ฐ˜ ๋™์•ˆ ๊ณ„์†๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐฉ๊ธˆ ๋ชจ๋“  ๋‚ด์šฉ์„ ๋‹ค ์ฝ์—ˆ์œผ๋ฉฐ ์‹ ๊ทœ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ๊ฐ„๋žตํ•œ ์š”์•ฝ์„ ๊ฒŒ์‹œํ•˜๊ณ  ์šฐ๋ฆฌ๊ฐ€ ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๋Š” ๋ฐ ๋„์›€์ด ๋˜์—ˆ์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค.

์˜ค๋Š˜๋‚  Rust Stable์ด ํ•˜๋Š” ์ผ:

0..5 ๋Š” ํŒจํ„ด ์ผ์น˜์— ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๋ฐ˜๊ฐœ๋ฐฉ ๋ฒ”์œ„ [0, 1, 2, 3, 4]๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
0...5 ๋Š” ํŒจํ„ด ์ผ์น˜์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ซํžŒ ๋ฒ”์œ„ [0, 1, 2, 3, 4, 5]๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

ํŒจํ„ด ์ผ์น˜ ์™ธ๋ถ€์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ถ”๊ฐ€ ํ์‡„ ๋ฒ”์œ„ ๊ตฌ๋ฌธ์— ๋Œ€ํ•ด ์—ฌ๋Ÿฌ ํ˜•์‹์ด ์ œ์•ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ฐ๊ฐ์˜ ์žฅ์ ๊ณผ ๋‹จ์ ์„ ๋‹ค๋ฃฐ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

0...5

์žฅ์ : ๊ธฐ์กด ํŒจํ„ด ์ผ์น˜ ๊ตฌ๋ฌธ๊ณผ ์ผ์น˜ํ•˜์—ฌ ํŒจํ„ด ์ผ์น˜ ๊ตฌ๋ฌธ์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์—†๋‹ค๊ณ  ๊ฐ€์ •ํ•  ๋•Œ ์–ธ์–ด๋ฅผ ๋” ์‘์ง‘๋ ฅ ์žˆ๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‹จ์ : ์ž˜๋ชป ์ž…๋ ฅํ•˜๊ณ  ํ•˜๋‚˜์˜ ์˜ค๋ฅ˜๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๊ธฐ ์‰ฝ๊ณ , ๋‹ค๋ฅธ ๊ฐœ๋…์„ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ์ด ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋‹ค๋ฅธ ์–ธ์–ด๋กœ ์ธํ•ด ์˜๋„๋ฅผ ์˜คํ•ดํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.

0..=5

์žฅ์ : ์ž˜๋ชป ์ž…๋ ฅํ•˜๊ธฐ๊ฐ€ ๋” ์–ด๋ ต๊ณ  ์˜๋ฏธ์ ์œผ๋กœ ๋” ๋ช…ํ™•ํ•ฉ๋‹ˆ๋‹ค.

๋‹จ์ : ๊ธฐ์กด ํŒจํ„ด ์ผ์น˜ ๊ตฌ๋ฌธ๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ๋ฌป๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ๊ฐ€ ... ์—ฌ๊ธฐ์ง€๋งŒ ..= ์—ฌ๊ธฐ์— ์žˆ๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

0..^5

..= ์™€ ๋งค์šฐ ์œ ์‚ฌํ•˜์ง€๋งŒ ์ง€์ˆ˜ ์—ฐ์‚ฐ์ž์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค๋Š” ์ถ”๊ฐ€ ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

inclusive(0..5)

์žฅ์ : ์˜๋ฏธ์ƒ ๋งค์šฐ ๋ช…ํ™•ํ•ฉ๋‹ˆ๋‹ค. ์ž˜๋ชป ์ž…๋ ฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‹จ์ : ์ข€ ๊ธธ๋‹ค. ๋˜ํ•œ ํŒจํ„ด ์ผ์น˜ ๊ตฌ๋ฌธ๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

0....5

์žฅ์ : ... ์˜ ์˜คํƒ€ ๋ฌธ์ œ๋„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

๋‹จ์ : ์˜๋ฏธ ์ฒด๊ณ„๊ฐ€ ์ข‹์ง€ ์•Š๊ณ  ํŒจํ„ด ์ผ์น˜ ๊ตฌ๋ฌธ๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š์œผ๋ฉฐ ํŒจํ„ด ์ผ์น˜ ๊ตฌ๋ฌธ๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

[0..5] ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋Œ€๊ด„ํ˜ธ๋Š” ์ด๋ฏธ ์–ธ์–ด์—์„œ ๊ตฌ๋ฌธ๋ก ์  ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

0..<=5 ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ฐ’์„ ๋ฒ”์œ„์™€ ๋น„๊ตํ•˜๋Š” ๊ธฐ์กด ๊ตฌ๋ฌธ๊ณผ ์ถฉ๋Œํ•ฉ๋‹ˆ๋‹ค.

"ํŒจํ„ด ์ผ์น˜ ๊ตฌ๋ฌธ๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š์Œ"์ด๋ผ๋Š” ๋‹จ์ ์ด ์žˆ๋Š” ๋‚˜์—ด๋œ ๋ชจ๋“  ์˜ต์…˜์€ ํŒจํ„ด ์ผ์น˜ ๊ตฌ๋ฌธ์„ ๋ณ€๊ฒฝํ•˜๋ฉด ๊ฐœ์„ ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ํ•ด๋‹น ๊ฒฝ๋กœ์—๋Š” ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜๋Š” ... ๋ฐ (์—ฌ๊ธฐ์„œ ๊ตฌ๋ฌธ ์„ ํƒ)์„ ํŒจํ„ด ์ผ์น˜ ๋‚ด์—์„œ ๋™๋“ฑํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ํ•˜์œ„ ํ˜ธํ™˜์„ฑ์ด ๊นจ์ง€๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ํŒจํ„ด ์ผ์น˜ ์™ธ๋ถ€์—์„œ ... ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์—ฌ ํ•ด๋‹น ๊ฒฝ๋กœ๋ฅผ ๋”ฐ๋ผ๊ฐˆ ๊ฒฝ์šฐ ํŒจํ„ด ์ผ์น˜์—์„œ ... ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋„๋ก ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์ƒํ•œ๊ณผ ํ•˜ํ•œ์„ ๋ชจ๋‘ ํฌํ•จํ•˜๊ฑฐ๋‚˜ ๋ฐฐํƒ€์ ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ณด๋‹ค ์ผ๋ฐ˜์ ์ธ ๋ชฉ์ ์˜ ๋ฒ”์œ„ ๊ตฌ๋ฌธ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ๋…ผ์˜๊ฐ€ ์žˆ์—ˆ์ง€๋งŒ ๋ฐ˜๊ฐœ๋ฐฉ ๋ฐ ํ์‡„ ๋ฒ”์œ„๊ฐ€ ํฌํ•จ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์œผ๋ฏ€๋กœ ํ•ด๋‹น ๊ตฌ๋ฌธ์ด ํ•„์š”ํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ ์‚ฌ๋ก€์˜ 99.9999%.

๋‚˜๋Š” ์ด ํ† ๋ก ์„ ์ตœ๋Œ€ํ•œ ํ‘œํ˜„ํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์š”์ ์„ ์ ์ ˆํ•˜๊ฒŒ ํ‘œํ˜„ํ•˜์ง€ ๋ชปํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐ๋˜๋ฉด ์•Œ๋ ค์ฃผ์‹œ๋ฉด ์—…๋ฐ์ดํŠธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

@Xaerox ํ›Œ๋ฅญํ•œ ์š”์•ฝ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์†Œ์Šค๊ฐ€ ... ํŒจํ„ด ์ผ์น˜์—์„œ ์ƒˆ ๊ตฌ๋ฌธ(์˜ˆ: ..= )์œผ๋กœ ๊ฒฐ์ •๋˜๋ฉด ์ž๋™์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋„๊ตฌ(rustfmt ํ”Œ๋Ÿฌ๊ทธ์ธ์ผ ์ˆ˜ ์žˆ์Œ)๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด "์˜ˆ์ „ ๋ฐฉ์‹์œผ๋กœ ์ž‘์„ฑ๋œ ๋ชจ๋“  ์ฝ”๋“œ"์— ์˜ํ•ด ๋ณด๋ฅ˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ํ”„๋กœ์ ํŠธ ์ž‘์„ฑ์ž์˜ ์˜๋„์— ๋”ฐ๋ผ ํ˜ธ์ถœํ•ด์•ผ ํ•˜๋ฉฐ ๋ชจ๋“  ๋…น ๋งค์ฒด์— ์•Œ๋ฆผ/ํ—ค๋“œ๋ผ์ธ์ด ์žˆ์–ด์•ผ ๋ชจ๋“  ์‚ฌ๋žŒ์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฐ ๊ฒƒ๋“ค์„ ๊ฐ€์ง€๊ณ  ์ƒˆ๋กœ์šด ๊ตฌ๋ฌธ์— ์ผ์น˜ํ•˜๋Š” ํŒจํ„ด์—์„œ ... ๊ตฌ๋ฌธ์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์€ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ตฌ๋ฌธ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํ•  ์ˆ˜ ์žˆ๋Š” ํ•œ ๊ฐ€์ง€๋Š” @clarcharr์ด ์ œ์•ˆํ•œ ๋Œ€๋กœ ์ƒ๊ฐ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ตœ์†Œํ•œ ์‚ฌ๋žŒ๋“ค์„ ์ฐจ๋‹จ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค.

inclusive ํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค( std::range ๋˜๋Š” ์ „์ฃผ๊ณก์—๋„ ๊ฐ€๋Šฅ). ์ด๊ฒƒ์€ ์–ธ์  ๊ฐ€ ์ผ๋ฅ˜ ๊ตฌ๋ฌธ์„ ๊ฐ–๋Š” ๊ฒƒ์„ ๋ฐฐ์ œํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ์ง€๊ธˆ RangeInclusive๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ๋” ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ๋“ค์€ ๋ชจ๋‘ libs ๊ฒฐ์ •์ฒ˜๋Ÿผ ๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์— lang ํŒ€์ด ์ด๋Ÿฌํ•œ ํ•ญ๋ชฉ์„ ์•ˆ์ •ํ™”/์ถ”๊ฐ€ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•  ๊ด€ํ• ๊ถŒ์ด ์žˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์„ ์„ ํ˜ธ RangeInclusive ์ด์—†๋Š” ๋ฌด์–ธ๊ฐ€์— ์ž์ฒด Empty ๋ณ€ํ˜•์„ ํ›„ํ•˜๊ฒŒ IntoIter ๋ณ€ํ˜•์žˆ๋‹ค. ์ˆ˜๋™์œผ๋กœ Empty { at } ์—†์ด ๋นˆ ๋ฒ”์œ„๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ด ๋ณธ์งˆ์ ์œผ๋กœ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜๋Š” ๊ฒƒ์ด ๋” ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค.

๋˜๋Š” ๋‚ด๊ฐ€ ์–ธ๊ธ‰ํ•œ ํ•œ ๊ฐ€์ง€ ๊ฒฝ์šฐ์—์„œ MAX ์™€ MIN ๋ฅผ ๊ตํ™˜ํ•˜์‹ญ์‹œ์˜ค. ์ด๋Š” RangeInclusive ์™€ ๊ด€๋ จ๋œ ๋ณด๋‹ค ์ผ๋ฐ˜์ ์ธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์„ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ค์ง€๋งŒ ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•ฉ๋ฆฌ์ ์ธ ํ•ด๊ฒฐ์ฑ…์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๋“  ์ €๋Š” ๊ตฌ๋ฌธ ๋ฌธ์ œ์™€ ์ƒ๊ด€์—†์ด ์กด์žฌํ•  ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์œ ํ˜•์„ ์•ˆ์ •ํ™”ํ•˜๋Š” ๊ฒƒ์„ ๋งค์šฐ ์ง€์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ํฌ๊ด„์ ์ธ ๋ฒ”์œ„๋กœ ์Šฌ๋ผ์ด์‹ฑํ•  ์ˆ˜ ์žˆ๋Š” ์•ˆ์ •์ ์ธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ตฌ๋ฌธ์ด ์•ˆ์ •ํ™”๋  ๋•Œ ์‚ฌ๋žŒ๋“ค์€ ์ด๋ฏธ ์œ ํ˜•์„ ์‚ฌ์šฉํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์œ  ๋•Œ๋ฌธ์— ๊ตฌ๋ฌธ ๋ฐ ์œ ํ˜•์ด ๋‹ค๋ฅธ ๊ธฐ๋Šฅ ํ”Œ๋ž˜๊ทธ ์•„๋ž˜์— ์žˆ์Šต๋‹ˆ๋‹ค.

@scottmcm ์ด ์‹œ์ ์—์„œ ์•„๋งˆ๋„ ๋ณ„๋„์˜ ์Šค๋ ˆ๋“œ์—ฌ์•ผ ํ•œ๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

๊ตฌ๋ฌธ ํ† ๋ก ์„ ๊ณ„์† ์ง„ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๋‚ด๊ฐ€ ์„ ํ˜ธํ•˜๋Š” ๊ฒฝ๋กœ๋ฅผ ์ œ๊ณตํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ €๋Š” ..= ๊ตฌ๋ฌธ์„ ๊ฐ€์žฅ ์ข‹์•„ํ•˜๋ฏ€๋กœ ์ด ๊ตฌ๋ฌธ ์„คํƒ•์„ ํŒจํ„ด ์ผ์น˜์—์„œ ... ์™€ ๋™์ผํ•˜๊ณ  ํŒจํ„ด ์ผ์น˜ ์™ธ๋ถ€์—์„œ InclusiveRange๋กœ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์–ธ์–ด๋ฅผ ์ผ๊ด€๋˜๊ฒŒ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๊ณต์ง€ ๋ฐ ์ž๋™ํ™”๋œ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒจํ„ด์˜ ..= ๊ตฌ๋ฌธ์œผ๋กœ ์‚ฌ์šฉ์ž์™€ ์ฝ”๋“œ๋ฅผ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ... ์—์„œ ์ถฉ๋ถ„ํ•œ ์‚ฌ์šฉ์ž๋ฅผ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐ๋˜๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ ๊ฒฝ๊ณ ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๊ฒฐ๊ตญ(์ง€๊ธˆ๋ถ€ํ„ฐ ๋ช‡ ๋…„ ํ›„์—๋„) ์ปดํŒŒ์ผ๋Ÿฌ ์˜ค๋ฅ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด ์ œ์•ˆ์ด ์ œ๊ณต๋œ ์ง€ 24์ผ์ด ์ง€๋‚ฌ์ง€๋งŒ ์•„๋ฌด๋Ÿฐ ์ฝ”๋ฉ˜ํŠธ๋„ ์ œ๊ณต๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ ๊ณ„ํš์„ ๊ณ„์† ์ง„ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

ํŽธ์ง‘ : ๋ชจ๋ฐ”์ผ์—์„œ ๋‚˜๋Š” ์—„์ง€ ์†๊ฐ€๋ฝ์„ ๋ณด์ง€ ๋ชปํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜๋Œ€ ์˜๊ฒฌ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ซ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

@Xaerox ์ €๋Š” ๊ทธ๋ ‡๊ฒŒ ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋น„ํ•˜ํ•˜๋Š” ๊ฒƒ์„ ๋™์˜ํ•˜์ง€ ์•Š๋Š” ... ์ฐฌ์„ฑ ..= ์ด๋ฏธ์ด ์Šค๋ ˆ๋“œ์— ๊ฒŒ์‹œ ํ•œ ์ด์œ ์— ๋Œ€ํ•œ ์ข‹์€ ์„ ํƒ์ž…๋‹ˆ๋‹ค. ๊ฐ™์€ ์•„์ด๋””์–ด๊ฐ€ ์ด๋ฏธ ์ œ์‹œ๋˜๊ณ  ๋…ผ์˜๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ท€ํ•˜์˜ ๊ตฌ์ฒด์ ์ธ ์ œ์•ˆ์— ๋‹ต๋ณ€ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋ถ„๋ช…ํ•œ ๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ํ•ฉ์˜๋ฅผ ์ด๋ฃจ์ง€ ๋ชปํ–ˆ๋‹ค๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค. ๋งŽ์€ ๋ถ„๋“ค์ด ํ† ๋ก ์œผ๋กœ ์ธํ•ด ํ”ผ๋กœ๊ฐ์„ ๋Š๋ผ์…จ์„ ๊ฑฐ๋ผ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

ํŽธ์ง‘์ด : ๋” ๊ตฌ์ฒด์ ๋ฅผํ•˜๊ธฐ ์œ„ํ•ด, ๋‚ด๊ฐ€ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ ค๋Š” ... ์ฐฌ์„ฑ ..= ์ด์œ ๋Š”

  • ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์€ ์ดํƒˆ์— ๋ง‰๋Œ€ํ•œ ๋น„์šฉ์ด ๋“ญ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋‹จํ˜ธํ•˜๊ฒŒ ..= ์ข‹์•„ํ•˜๋”๋ผ๋„ ์•ˆ์ •์—์„œ ํฌ๊ด„์ ์ธ ๋ฒ”์œ„ ํ‘œํ˜„์‹์„ ์–ป๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋Š” ์‚ฌ์šฉ ์ค‘๋‹จ ์ฃผ๊ธฐ์˜ ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ..= ๋งˆ์Œ์— ๋“ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค . ๋ช…ํ™•ํ•˜์ง€ ์•Š๊ณ  ๋ถˆ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ์˜ค๋ฅ˜๋กœ ์ธํ•ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์ ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ ์‚ฌ์šฉ์ž๊ฐ€ ์ฒ˜์Œ์œผ๋กœ ๋ณด๊ณ  ์žˆ๋Š” ๋‚ด์šฉ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค๋Š” ์˜๋ฏธ๋Š” ์•„๋‹™๋‹ˆ๋‹ค.
  • ๋‚˜๋Š” ์œ ์‚ฌํ•œ ๊ตฌ์กฐํ™”/ํ•ด์ฒดํ™” ์ž‘์—…์„ ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํŒจํ„ด๊ณผ ํ‘œํ˜„์‹ ์‚ฌ์ด์— ๋Œ€์นญ์ด ํ•„์š”ํ•˜๋‹ค๋Š” ์ „์ œ์— ๋™์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

(์ด ๋Œ“๊ธ€์„ ์ž‘์„ฑํ•˜๋Š” ๋™์•ˆ ๊ด€์ ์ด ์•ฝ๊ฐ„ ๋ฐ”๋€Œ์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๋‚ด ์ƒ๊ฐ ๊ณผ์ •๊ณผ ๋‚ด๊ฐ€ ๋‚ด๋ฆฐ ๊ฒฐ๋ก ์— ๋„๋‹ฌํ•œ ์ด์œ ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ๋ชจ๋“  ๊ฒƒ์„ ๊ทธ๋Œ€๋กœ ๋‘๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.)

๊ทธ๋Ÿฌํ•œ ๊ฒฝํ—˜์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ ์ค‘๋‹จ ๋น„์šฉ์— ๋Œ€ํ•ด ์–ธ๊ธ‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ์—ฌ์ „ํžˆ ..= ํ•ฉ๋‹ˆ๋‹ค.

ํŠน์ • ์‹œ์ ์—์„œ ์šฐ๋ฆฌ๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฌด์–ธ๊ฐ€๋ฅผ ๋ฐฐ์šฐ๋„๋ก ๊ธฐ๊บผ์ด ์š”์ฒญํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ „์ฒด๋Š” ๋ฐฐ์›Œ์•ผ ํ•  ๋ถ€๋ถ„์ด๋ฉฐ, ์ผ๋ฐ˜์ ์œผ๋กœ ์ „๋ฌธํ™”๋œ ๊ตฌ๋ฌธ์€ ํ•ญ์ƒ ์˜๋ฏธ๋ก ์— ์•ฝ๊ฐ„์˜ ๋น„์šฉ์ด ๋“ญ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ์–ธ๋œป ๋ณด๊ธฐ์— ๊ตฌ๋ฌธ์„ ์ธ์‹ํ•  ๊ฒƒ์ด๋ผ๊ณ  ๊ธฐ๋Œ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. .. ๋„ ์ด์™€ ๊ด€๋ จํ•˜์—ฌ ๋‚˜์˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ํŠน์ˆ˜ ๊ตฌ๋ฌธ์ด ๋„ˆ๋ฌด ๋งŽ์œผ๋ฉด ์–ธ์–ด๊ฐ€ Rust๊ฐ€ ์›ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ๋ธŒ๋ ˆ์ธํฝ์— ๊ฐ€๊น๊ฒŒ ๋ณด์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” ํŠน๋ณ„ํ•œ ๊ตฌ๋ฌธ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ๋กœ ์„ ํƒํ•œ ๊ฒฝ์šฐ๊ฐ€ ์‹ค์ œ๋กœ ๊ฐ€์น˜๊ฐ€ ์žˆ์„ ๋งŒํผ ์ถฉ๋ถ„ํžˆ ์ผ๋ฐ˜์ ์ด๋ผ๋Š” ์ ์— ์ฃผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์†”์งํžˆ ๋งํ•ด์„œ ์ง€๊ธˆ ๋‚ด๊ฐ€ ์ด๊ฒƒ์„ ํƒ€์ดํ•‘ํ•œ ์ง€๊ธˆ ๋‚˜๋Š” ์ด ์ผ€์ด์Šค๊ฐ€ ๊ทธ๋งŒํ•œ ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š”์ง€ ์™„์ „ํžˆ ํ™•์‹ ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ํฌ๊ด„์ ์ธ ๋ฒ”์œ„์˜ ํ•„์š”์„ฑ์€ ๊ตฌ๋ฌธ์„ ๋ณด์ฆํ•  ๋งŒํผ ๋†’์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋ถˆ์ผ์น˜๋Š” ์—ฌ์ „ํžˆ ๋‚˜๋ฅผ ๊ดด๋กญํžŒ๋‹ค. ํฌ๊ด„์ ์ธ ๊ธฐ๋Šฅ๊ณผ ํŒจํ„ด ์ผ์น˜์— ... ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ์˜์–ด์—์„œ ํšŒ์ƒ‰๊ณผ ํšŒ์ƒ‰์ด ๋ชจ๋‘ ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋Š๊ปด์ง‘๋‹ˆ๋‹ค. ํ‘œ์ค€ํ™”ํ•  ๊ธฐํšŒ๊ฐ€ ์žˆ์„ ๋•Œ ์ œ ์ผ๋ถ€๊ฐ€ ๊ทธ๋ ‡๊ฒŒ ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๋Š๋‚๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋Ÿฌํ•œ ๋ณ€๊ฒฝ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ์—๋Š” ์‹ค์ œ ๋ฌผ๋ฅ˜ ๋ฌธ์ œ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ Rust 2.0์„ ๋””์ž์ธํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด(๋ฏธ์นœ ์ง“์ผ์ง€๋„ ๋ชจ๋ฆ…๋‹ˆ๋‹ค. ์ €๋Š” ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค) ์•„๋งˆ๋„ ์ด๊ฒƒ์„ ๋‹ค์‹œ ์‚ดํŽด๋ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ €๋Š” ํ˜„์žฌ ํŒจํ„ด ๋งค์นญ ์™ธ๋ถ€์˜ ์ธ์Šคํ„ด์Šค์— inclusive ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ํŒจํ„ด ๋งค์นญ์— ... ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

@withoutboats

  1. ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ C++์™€ ๊ฐ™์€ ๋ชจ๋“ (๋‹ค์†Œ) ์ž˜๋ชป๋œ ๊ฒฐ์ •์˜ ์กฐํ•ฉ์œผ๋กœ ๋๋‚ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ƒํ™ฉ์ด ๊ฐ€๋Šฅํ•œ ํ•œ ์ผ๊ด€์„ฑ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ดˆ๋ณด์ž๊ฐ€ ๋” ๋งŽ์ด ๋ฐฐ์šฐ๋„๋ก ๊ฐ•์š”ํ•ฉ๋‹ˆ๋‹ค.
    ๋”ฐ๋ผ์„œ ๋•Œ๋กœ๋Š” ๋” ๋‚˜์€ ์†”๋ฃจ์…˜์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

  2. ๊ทธ๋ ‡๋‹ค๊ณ  ํ•ด์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์ฒ˜์Œ ๋ณด๋Š” ๊ฒƒ์ด ๋ฌด์—‡์„ ๋ณด๊ณ  ์žˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๋‹ค๋Š” ์˜๋ฏธ๋Š” ์•„๋‹™๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋ชจ๋“  ๊ตฌ๋ฌธ์˜ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ(Rust๋ฅผ ์•„๋Š”)๋Š” Rust ์ฝ”๋“œ๊ฐ€ ๋ช…๋ฐฑํ•ด ๋ณด์ด์ง€๋งŒ ๋‹ค๋ฅธ ์–ธ์–ด์—์„œ Rust๋กœ ์˜ค๋Š” ์‚ฌ๋žŒ์€ ๋ˆ„๊ตฌ๋‚˜ ๊ตฌ๋ฌธ์„ ์ž์ฃผ ๊ฒ€์ƒ‰ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฌํ•œ ํŽธ๊ฒฌ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ..= ๋˜๋Š” ... ๋˜๋Š” ํฌํ•จ ๋ฒ”์œ„์— ๋Œ€ํ•œ ๋‹ค๋ฅธ ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค๋ฅธ ์–ธ์–ด๋Š” ๋ฐฐํƒ€์  ๋ฒ”์œ„์— ๋Œ€ํ•ด ... ๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์–ด์จŒ๋“  ๊ฒ€์ƒ‰ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. .
๋ช…๋ฐฑํ•œ ๊ธฐ๋Šฅ๋งŒ ์†Œ๊ฐœํ•˜๋Š” ๊ฒƒ์ด ์šฐ๋ฆฌ์˜ ๋ชฉํ‘œ๊ฐ€ ๋˜์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.
๋ช…๋ฐฑํ•ด ๋ณด์ด๋Š” ๊ธฐ๋Šฅ๋งŒ ๊ฐ–๊ณ  ์‹ถ๋‹ค๋ฉด Rust์— ์žˆ๋Š” ๊ธฐ์กด ๊ธฐ๋Šฅ์˜ ๋Œ€๋ถ€๋ถ„์„ ๊ฐ€์งˆ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ดˆ๋ณด์ž ์–ด์จŒ๋“  ๋ฌธ์„œ ๋ด์•ผ ๋ฌด์Šจ ์ผ์ด ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๋„ˆ๋ฌด ์ž˜๋ชป? ๋ฐ•์‚ฌ๋‹˜ ์ข‹์Šต๋‹ˆ๋‹ค!


  1. ์ดˆ๋ณด์ž๊ฐ€ ๋ฌธ์„œ๋ฅผ ๋ด์•ผ ํ•˜๋Š” ์‹œ๊ฐ„์„ ์ตœ์†Œํ™”ํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ๋‹ค๋ฉด ๊ตฌ์„ฑ๊ณผ ํฌํ•จ ๋ฒ”์œ„ ์ผ์น˜ ๊ฐ„์˜ ๋Œ€์นญ์„ ์œ„ํ•ด ๋…ธ๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค! (๋ฐ ๊ธฐํƒ€ ๊ตฌ์„ฑ)

@withoutboats๊ฐ€ ๋งํ–ˆ๋“ฏ์ด ์šฐ๋ฆฌ ์ค‘ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ด ํ† ๋ก ์— ์ง€์ณค์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ž ์‹œ ๋™์•ˆ ๊ทธ๊ฒƒ์„ ๋ฐ–์œผ๋กœ ์•‰ํ˜€ ์™”์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋‚˜๋Š” ๋‹ค์‹œ ์ฝ๊ณ (์š”์•ฝ @Xaerox์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!) ์—ฌ๊ธฐ์—์„œ ๋‚ด ์ƒ๊ฐ์„ ๋‹ค์‹œ ๋ฐฉ๋ฌธํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค.

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

๋˜ํ•œ ๋‘ ์ข…๋ฅ˜์˜ ๋ฒ”์œ„์— ๋Œ€ํ•œ ๊ตฌ๋ฌธ์„ ์ œ๊ณตํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ณ„์† ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ช‡ ๊ฐ€์ง€ ์˜ต์…˜์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

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

  • ๋น„์ถ”์ฒœ ... ํŒจํ„ด๊ณผ ํ‘œํ˜„์— ์ถ”๊ฐ€ ..= ๋ชจ๋‘ํ•˜๊ณ , ์ถ”๊ฐ€ .. ํŒจํ„ด. ์œ„์˜ ๋‹จ์ ์„ ํ•ด๊ฒฐํ•˜๊ณ  ๋” ๊ณ ํ†ต์Šค๋Ÿฝ๊ณ (์ง€์› ์ค‘๋‹จ์œผ๋กœ ์ธํ•ด) ๋ฏธ๋ž˜์— ๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ ๋ฒ”์œ„(์˜ˆ: ์™ผ์ชฝ ๋…์ )์— ๋Œ€ํ•œ ๋ฌธ์„ ์—ฝ๋‹ˆ๋‹ค.

์ด ์‹œ์ ์—์„œ ๋‚˜๋Š” ์ฃผ๋กœ ํ† ๋ก ์„ ๋‹ค์‹œ ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์†”์งํžˆ ๋งํ•ด์„œ ์ด ์‹œ์ ์—์„œ ๋” ์ด์ƒ ํ•  ๋ง์ด ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ ˆ์ถฉ์ ์„ ๋“œ๋Ÿฌ๋ƒˆ๊ณ  ํ‰๊ฐ€๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ๊ฒฐ์ •์— ๋„๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด lang ํŒ€์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚ด ์˜๊ฒฌ์˜ ์ฃผ์š” ์š”์ ์€ ์—ฌ๊ธฐ์—์„œ ๋ญ”๊ฐ€ ๋ณ€๊ฒฝํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ์ด์œ (๊ทธ๋ฆฌ๊ณ  inclusive ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋Š” ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์€ ์ด์œ , IMO)์— ๋Œ€ํ•œ ์ดˆ๊ธฐ ์š”์ ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋‹ค๋ฅธ ์–ธ์–ด์—๋Š” ์ด๋Ÿฌํ•œ ์กฐํ•ฉ์ด ์žˆ์œผ๋ฉฐ ๋‚ด๊ฐ€ ์•„๋Š” ํ•œ ๊ทธ๋Ÿฌํ•œ ์˜ค๋ฅ˜๋กœ ์ธํ•ด ์‹ฌ๊ฐํ•œ ๊ณ ํ†ต์„ ๊ฒช์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—์„œ ์„ ํƒ ํŽธํ–ฅ์ด ๊ฑฑ์ •๋ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ๊ฐ€ ๊ฒฝ๋ฏธํ•œ์ง€ ๋˜๋Š” ์šฐ๋ฆฌ์˜ ์ฃผ์˜๋ฅผ ๊ฑฐ์˜ ๋Œ์ง€ ๋ชปํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•  ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ, ... ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ Rust์˜ ๋””์ž์ธ ์ฒ ํ•™๊ณผ ์ƒˆ๋กœ์šด ๋ชจ๋ฒ” ์‚ฌ๋ก€์˜ "์ƒ์ถฉ ๊ด€๊ณ„๊ฐ€ ๋„ˆ๋ฌด ์‹ฌ๊ฐํ•˜์ง€ ์•Š์€ ํ•œ ๋ฐœ์ด์„ ํ”ผํ•˜์‹ญ์‹œ์˜ค"๋ผ๋Š” ์ธก๋ฉด์— ์œ„๋ฐฐ๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋Š๊ปด์ง‘๋‹ˆ๋‹ค. (์˜ˆ: bool ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์ƒˆ๋กœ์šด enum ์œ ํ˜•์„ ์ƒ์„ฑํ•˜์—ฌ ํ•จ์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํ˜ผํ•ฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์–ด๋ ต์Šต๋‹ˆ๋‹ค.)

์˜ˆ๋ฅผ ๋“ค์–ด, C๋Š” ์–ธ์–ด์— while let ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ if ๋ฌธ์— ๋Œ€์ž…ํ•˜๋Š” ๊ฒƒ์ด ์œ ์šฉํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์ฆ๋ช…ํ–ˆ์ง€๋งŒ == ์„ ์˜๋ฏธํ•  ๋•Œ = ๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ธ์‹๋˜์—ˆ์Šต๋‹ˆ๋‹ค. == ๋Š” ์œ ์ผํ•œ ๋Œ€์•ˆ์ด ๋น„ํŠน์ดํ•˜๊ฒŒ ๋ชป์ƒ๊ธด ์ƒํ™ฉ์ด ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ Python๊ณผ ๊ฐ™์€ ์–ธ์–ด๊ฐ€ ์ด๋ฅผ ๊ฑฐ๋ถ€ํ•˜๋Š” ์กฑ์‡„๋กœ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐ€๋ณด๋ฉด ์‹ค์ œ๋กœ ์ผ์ฃผ์ผ ์ „์ฏค ์ฝ”๋”ฉ์— ์ง€์ณค์„ ๋•Œ Clippy๊ฐ€ ์ด๋Ÿฐ ๊ฒฝ์šฐ๋ฅผ ์žก์•˜์Šต๋‹ˆ๋‹ค.

foo == bar;  // This should be `foo = bar;`

...์—ฌ๊ธฐ์„œ ๊ฑฑ์ •๋˜๋Š” "ํ‚ค๋ฅผ ๋„ˆ๋ฌด ๋งŽ์ด ๋ˆŒ๋ €๋‹ค" ์‹ค์ˆ˜์˜ ์™„๋ฒฝํ•œ ์˜ˆ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค... ๊ทธ๋ฆฌ๊ณ  " == ๋Š” ํšจ๊ณผ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค"์™€ ๋‹ฌ๋ฆฌ .. ๋Œ€ ... ๋Œ€ํ•ด ๋ณดํ‘ธ๋ผ๊ธฐ ์ฒ˜๋ฆฌํ•˜๋Š” ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค.

@ssokolow ..= ๋„ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ ์ค‘๋‹จ์ด ๊ทธ๋ ‡๊ฒŒ ๊ณ ํ†ต์Šค๋Ÿฌ์šธ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋งค์šฐ ์‰ฌ์šด ์ž๋™ ์ˆ˜์ •์ž…๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์•„๋งˆ .. / ... (์ด๋ฏธ ์•ผ๊ฐ„์— ๊ตฌํ˜„๋จ) ์•ˆ์ •ํ™”๋กœ ์‚ด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์กด์žฌํ•˜๋Š” ์–ธ์–ด๊ฐ€ ์ด๊ฒƒ์ด ์ž‘๋™ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ œ์•ˆํ•˜๋Š” @aturon์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๋งํ–ˆ๋“ฏ์ด, ๋‚˜๋Š” Rust-lang/rfcs#1980์ด ๊ตฌ๋ฌธ ๋…ผ์˜ ์—†์ด ํ†ต๊ณผํ•  ๋•Œ libstd ์œ ํ˜•์„ ์•ˆ์ •ํ™”ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

@aturon์ด ์ง€์ ํ•œ ๊ฒƒ๊ณผ ํ•จ๊ป˜ ์ด ๊ตฌ๋ฌธ๊ณผ ๋ฐฐํƒ€์  ๋ฒ”์œ„ ๊ตฌ๋ฌธ ๋ชจ๋‘์— ๋Œ€ํ•œ ์ถ”์  ๋ฌธ์ œ๋ฅผ ๋ณ‘ํ•ฉํ•˜๋Š” ๊ฒƒ์ด ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋งˆ๋„ ์œ ํ˜•์— ๋Œ€ํ•ด ๋ณ„๋„์˜ ์ถ”์  ๋ฌธ์ œ๋ฅผ ๋งŒ๋“ค๊ณ  ๊ตฌ๋ฌธ ์ „์— ์œ ํ˜•์„ ์•ˆ์ •ํ™”ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

๋‚˜๋Š” lang ํŒ€ ํ† ๋ก ์„ ์œ„ํ•ด ๋‹ค์‹œ ์ง€๋ช…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์‹œ์ ์—์„œ ์ƒ๋‹นํžˆ ์ƒˆ๋กœ์šด ์•„์ด๋””์–ด๋‚˜ ์ ˆ์ถฉ์•ˆ์ด ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์€ ๊ฑฐ์˜ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ œ์‹œ๋œ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„์— ๋Œ€ํ•œ ๊ฒฐ์ •์„ ๋‚ด๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค.

2017๋…„ 5์›” 18์ผ ์˜ค์ „ 9:55:30 PDT, Aaron Turon [email protected] ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” lang ํŒ€ ํ† ๋ก ์„ ์œ„ํ•ด ๋‹ค์‹œ ์ง€๋ช…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋งค์šฐ ๊ฐ€๋Šฅ์„ฑ์ด ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.
์ด ์‹œ์ ์—์„œ ์ƒ๋‹นํžˆ ์ƒˆ๋กœ์šด ์•„์ด๋””์–ด๋‚˜ ์ ˆ์ถฉ์•ˆ์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๊ฐ€๋ฆฌํ‚ค๋‹ค. ์šฐ๋ฆฌ๋Š” ์ง€๊ธˆ๊นŒ์ง€์˜ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„์— ๋Œ€ํ•œ ๊ฒฐ์ •์„ ๋‚ด๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๋ฐฐ์น˜.

๋‹ค์Œ ์ฃผ ํšŒ์˜ ๋•Œ๋ฌธ์— ํšŒ์˜์— ๋‚˜๊ฐ€๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ฒฝ์šฐ ์ด๊ฒƒ์€ ๋‹ค์Œ ์ฃผ ํšŒ์˜์—์„œ ๋…ผ์˜๋ฉ๋‹ˆ๋‹ค, ๋‚ด๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ์†”๋ฃจ์…˜์— ๋Œ€ํ•œ ๋‚ด ์ง€์›์„ ์Œ์„ฑ ๊ฒƒ์ด๋‹ค ... ์—ฌ๋ถ€, ..= , inclusive , ๋˜๋Š” ๊ธฐํƒ€.

์šฐ๋ฆฌ๊ฐ€ ๊ฑฐ๊ธฐ์— ์žˆ๋Š” ๋™์•ˆ rest/spread ๊ตฌ๋ฌธ์— ๋Œ€ํ•ด ๋…ผ์˜ํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
๋‚˜๋Š” ๋‹จ๋… ๋ฒ”์œ„์— .. , ํฌ๊ด„์  ๋ฒ”์œ„์— ... , ํœด์‹/ํ™•์‚ฐ์— .... ์— ํˆฌํ‘œํ•ฉ๋‹ˆ๋‹ค.

take_range(..max); // exclusive range
take_range(...max); // inclusive range
take_multiple_args(....tuple); // spread
if let 0..10 = get_num() {} // exclusive range pattern
if let 0...9 = get_num() {} // inclusive range pattern
if let [first, ....rest] = get_slice() {} // rest pattern

์ €๋Š” ๋‹ค์Œ ๋‘ ๊ฐ€์ง€ ์ด์œ ๋กœ ๋‚˜๋จธ์ง€ ์Šฌ๋ผ์ด์Šค์— ๋Œ€ํ•ด ... ์— ํˆฌํ‘œํ•ฉ๋‹ˆ๋‹ค.

  1. ์‚ฌ๋žŒ๋“ค์€ ์ด๋ฏธ ๊ฐ€๋Šฅ์„ฑ์— ์ต์ˆ™ ... ์ปคํ”ผ ์Šคํฌ๋ฆฝํŠธ์™€ ๊ฐ™์€ ์–ธ์–ด์—์„œ "ํœด์‹"์„ ์˜๋ฏธํ•œ๋‹ค (์ปคํ”ผ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‚ฌ์šฉ rest... ๊ฐ€๋ณ€ ์ธ์ž์™€ ํ†ตํ™”๋ฅผ "ํ‘œ์‹œ๊ฐ€"์— ๋Œ€ํ•œ ๊ธฐ๋Šฅ ์„œ๋ช…์—)์™€ ์˜์–ด (์˜ฌ๋ฐ”๋ฅธ ์œ ๋‹ˆ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ ํฌ์ธํŠธ ์—ฌ๋ถ€์— ๊ด€๊ณ„์—†์ด ๋งˆ์นจํ‘œ 4๊ฐœ๊ฐ€ ์•„๋‹ˆ๋ผ ์ƒ๋žต ๊ธฐํ˜ธ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ์„ธ ๊ฐœ์˜ ๋งˆ์นจํ‘œ์ž…๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์€ ์ค„์ž„ํ‘œ๋ฅผ ์˜์–ด๋กœ "๋” ๋งŽ์ด ์žˆ์ง€๋งŒ ํฐ ์†Œ๋ฆฌ๋กœ ๋งํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค"๋ฅผ ๋Œ€๋žต์ ์œผ๋กœ ์˜๋ฏธํ•˜๋Š” ์ค„์ž„ํ‘œ๋ฅผ ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ.)

  2. ๋‚ด๊ฐ€ Rust์˜ ๊ตฌ๋ฌธ์— ๋Œ€ํ•ด ๋ญ”๊ฐ€๋ฅผ ๋†“์น˜๊ณ  ์žˆ์ง€ ์•Š๋Š” ํ•œ, ๋ฒ”์œ„์—๋Š” .. ๋ฐ ..= ๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ ๋‚˜๋จธ์ง€ ์Šฌ๋ผ์ด์Šค์—๋Š” ... ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋“  ์ƒํ™ฉ์—์„œ ... ์ž…๋ ฅํ•œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค .. ๋ฅผ ์˜๋ฏธํ•˜๊ฑฐ๋‚˜ ๊ทธ ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ ์—ฌ์ „ํžˆ ์ปดํŒŒ์ผ ํƒ€์ž„ ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค.

    ์ด๋ฅผ ์œ„ํ•ด ์ €๋Š” ๋‘ ๊ฐ€์ง€ ๊ฐ€์ •์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

    1. ๋‚˜๋จธ์ง€ ๊ตฌ๋ฌธ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€(์‹œํ€€์Šค ์••์ถ• ํ•ด์ œ ์ปจํ…์ŠคํŠธ ์™ธ๋ถ€์—์„œ) ์˜คํƒ€๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์‰ฌ์šด no-op์œผ๋กœ ํ—ˆ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. (์˜ˆ: for _ in ...rest ๋Š” ํ—ˆ์šฉ๋˜๋Š” ๊ฒฝ์šฐ for _ in rest ์™€ ๋™์ผํ•˜์ง€๋งŒ ์˜คํƒ€๊ฐ€ ๊ฑฐ์˜ ํ™•์‹คํ•ฉ๋‹ˆ๋‹ค.

    2. ํ• ๋‹นํ•  ํŒจํ„ด์œผ๋กœ ๊ฐœ๋ฐฉํ˜• ๋ฒ”์œ„๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์œ ํšจํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. (์˜ˆ: let [first, ..rest] = ๋Š” ์œ ํšจํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.)

@ssokolow ์‚ผ์ค‘ ์ ์€ ์ด๋ฏธ ํŒจํ„ด์˜ ๋ฒ”์œ„๋ฅผ ์˜๋ฏธํ•˜๋ฏ€๋กœ ๋‚˜๋จธ์ง€ ๊ตฌ๋ฌธ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@phaux ํฌ์ธํŠธ. ์–ด๋–ค ์ด์œ ์—์„œ์ธ์ง€ ์žŠ์–ด๋ฒ„๋ ธ์Šต๋‹ˆ๋‹ค.

"๋งŒ์•ฝ ์šฐ๋ฆฌ๊ฐ€ Rust 2.0์„ ๋งŒ๋“ ๋‹ค๋ฉด" ํƒœ๊ทธ๋ฅผ ๋Š์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ผ์ค‘ ์ ์€ ์ด๋ฏธ ํŒจํ„ด์˜ ๋ฒ”์œ„๋ฅผ ์˜๋ฏธํ•˜๋ฏ€๋กœ ๋‚˜๋จธ์ง€ ๊ตฌ๋ฌธ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ํŒจํ„ด์˜ ... ๋Š” ์–‘์ชฝ์— ํ‘œํ˜„์‹์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค( a...b ). ๋ฐ˜๋ฉด ๋‚˜๋จธ์ง€ ๊ตฌ๋ฌธ์€ ... ๋ฅผ ์ ‘๋‘์‚ฌ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์•„๋‹ˆ์š”?

lang ํŒ€์€ ์˜ค๋Š˜ ํšŒ์˜์—์„œ ์ด ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ๋‹ค์‹œ ๋…ผ์˜ํ–ˆ๊ณ  ๋Œ€๋žต ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋งคํŠธ๋ฆญ์Šค์— ๋„๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ํŒจํ„ด์—์„œ ... ๋ฅผ ์ง€์›ํ•˜๊ณ  ํ‘œํ˜„์‹์—์„œ .. ํ•˜๋Š” ๊ฒƒ์€ ์ง€์ง€ํ•  ์ˆ˜ ์—†๋Š” ๋””์ž์ธ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์‚ฌ์šฉ์ž๊ฐ€ ๊ตฌ๋ฌธ์ด ์ž‘๋™ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ๊ธฐ๋Œ€ํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

  • ... ๋ฐ .. ๋ฅผ ๋‘ ์œ„์น˜์— ๋ชจ๋‘ ํ—ˆ์šฉํ•˜๋ฉด ๋„์›€์ด ๋˜์ง€๋งŒ ๊ฐœ๋ณ„ ๋ฌธ์ œ๋Š” ์‹ค์ œ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ์ค‘ ๋ˆ„๊ตฌ๋„ ์ž˜๋ชป๋œ ๊ธฐ๊ฐ„์„ ์ถ”์ ํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์„ ๋ณด๋‚ด๋Š” ์‚ฌ๋žŒ๋“ค์— ๋Œ€ํ•œ ๋ณด๊ณ ๋ฅผ ๋ฐ›๊ณ  ์‹ถ์–ดํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • ..= ๋ฐ .. ๊ฒƒ์€ ๋ฏธํ•™์ ์œผ๋กœ ๋œ ๋งค๋ ฅ์ ์ด์ง€๋งŒ ์œ„์˜ ์‹ค์ œ ์ ์ธ ์‹ค์ œ ๋ฌธ์ œ๋ฅผ ํ”ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„์ฃผ ๋ถ€๋“œ๋Ÿฌ์šด ๋ฐฉ์‹์œผ๋กœ ๋กค์•„์›ƒํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋จผ์ € ..= ๋ฅผ ๋Œ€์•ˆ ๊ตฌ๋ฌธ์œผ๋กœ ๋„์ž…ํ•˜๊ณ (rustfmt ๊ฐ€ ๋‹ค์‹œ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Œ), ๊ด€์šฉ์ ์ด ๋œ ํ›„์—๋งŒ ... ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋งํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•˜์—ฌ ํŒ€์€ ..= ๋ฐ .. ๊ฐ€ ์šฐ๋ฆฌ์˜ ์ตœ์„ ์˜ ๊ธธ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ๋˜ํ•œ ์ƒˆ๋กœ์šด ์ฃผ์žฅ์ด ์ œ๊ธฐ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋งค์šฐ ๋‚ฎ๋‹ค๋Š” ์ ์—์„œ ๋…ผ์˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ๋›ฐ์–ด๋“ค ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋‘ ๊ฐ€์ง€ ๋ชจ๋‘์— ๋Œ€ํ•ด ..= ํ‘œ๊ธฐ๋ฒ•์„ ๊ตฌํ˜„ํ•˜๊ณ ์ž ํ•˜๋Š” ์‚ฌ๋žŒ์„ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํŒจํ„ด๊ณผ ํ‘œํ˜„, ๊ทธ๋ฆฌ๊ณ  ์ด์–ด์„œ ์šฐ๋ฆฌ๋Š” FCP๋กœ ๊ฐˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค!

์ด๋ฅผ ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” ๊ตฌํ˜„์„ ์ถ”์ง„ํ•  ๋ˆ„๊ตฐ๊ฐ€(๋˜๋Š” ์ผ๋ถ€ ์‚ฌ๋žŒ๋“ค)๋ฅผ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ์ด๊ฒƒ์€ ๋” ์ž‘์€ PR์—์„œ ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์‹œ์ž‘ํ•˜๋ ค๋ฉด ..= ๋ฅผ ... ์˜ ๋ณ„์นญ์œผ๋กœ ํŒŒ์„œ์— ์ถ”๊ฐ€ํ•˜๊ณ  ๊ธฐ์กด ํ…Œ์ŠคํŠธ๋ฅผ ๋ณ€ํ™˜ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

    • ... ๋Š” ๋ฌผ๋ก  ๊ณ„์† ์ž‘๋™ํ•ด์•ผ ํ•˜๋ฉฐ ์ด๊ฒƒ์ด "์ž๋™" ์‚ฌ์šฉ ์ค‘๋‹จ๋˜๊ธฐ๋ฅผ ์›ํ•˜๋ฏ€๋กœ (์•„์ง) ๊ฒฝ๊ณ  ๋“ฑ์„ ๋ฐœํ–‰ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

    • ๋”ฐ๋ผ์„œ ... ํŒจํ„ด์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    • ์•„๋งˆ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ƒ๊ฐํ•˜๋Š” ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค ๋ ‰์„œ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ DotDotEquals ํ† ํฐ ( ์—ฌ๊ธฐ์— ๊ธฐ์กด DotDotDot ) ๋‹ค์Œ ์ˆ˜์ • ํŒŒ์„œ์„ ๋ฐ›์•„ DotDotEquals ๋ชจ๋“  ๊ณณ์—์„œ ์šฐ๋ฆฌ ์ด์ œ DotDotDot ์ˆ˜๋ฝ( ์˜ˆ์‹œ )

    • ripgrep DotDotDot ๋Š” ์—ฌ๊ธฐ ๋‹น์‹ ์˜ ์นœ๊ตฌ์ž…๋‹ˆ๋‹ค ;)

  • ํ‘œํ˜„์‹์˜ ... ๋Š” ๊ฒฐ์ฝ” ์•ˆ์ •์ ์ด์ง€ ์•Š์œผ๋ฏ€๋กœ ..= ํ•˜๊ณ  ์ด์ „ ์ง€์›์„ ์ข…๋ฃŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • ์•ผ์ƒ์˜ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์นœ์ ˆํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ ์ค‘๋‹จ ๊ธฐ๊ฐ„์„ ๊ฑฐ์น  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ผญ ํ•„์š”ํ•œ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค(์ƒ๊ฐ?)

์ฐธ๊ณ ๋กœ ๊ตฌํ˜„ํ•  ๋•Œ extern fn foo(a: u32, ...) ๊ตฌ๋ฌธ ์„ ..= ๋กœ ๋ณ€๊ฒฝํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค ๐Ÿ˜†

์ฝ”๋“œ์— ๋Œ€ํ•œ ๋ฉ‹์ง„ ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„์ฒ˜๋Ÿผ ๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ›์•„๋ณด๊ณ  ์‹ถ์ง€๋งŒ ์•ž์œผ๋กœ 2์ฃผ ๋™์•ˆ ์‹œ๊ฐ„์ด ๋งŽ์ง€ ์•Š์„ ๊ฒƒ์ด๋ฏ€๋กœ ๋ˆ„๊ตฌ๋“ ์ง€ ๋ฐ›์•„๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด ๋ถ€๋‹ด ์—†์ด ์ด์šฉํ•˜์„ธ์š”!

๋‚˜๋Š” ์ฐฌ์„ฑ ๊ฐœ์ธ์ ์œผ๋กœ ๋” ํ•ด์š” ..^ ์ด์ƒ ..= ๋กœ, a operator= b ์ผ๋ถ€ ์‚ฌ์—…์ž, ์ด๋ฏธ ๋ณ„์นญ์ž…๋‹ˆ๋‹ค a = a operator b . ๋ฐ˜๋ฉด์— ^ ๋Š” XOR์— ๋Œ€ํ•ด์„œ๋งŒ ํ›จ์”ฌ ์ ๊ฒŒ ์‚ฌ์šฉ๋˜๋ฏ€๋กœ ํ˜ผ๋™์„ ๋œ ์ผ์œผํ‚ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

.. ์€ ์ด์— ๋Œ€ํ•œ ์™ผ์ชฝ ๋ฐ ์˜ค๋ฅธ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž์˜ ์œ ํ˜•๊ณผ ๋‹ค๋ฅธ ์œ ํ˜•์„ ์ƒ์„ฑํ•˜๋ฏ€๋กœ ..= ์— ๋Œ€ํ•œ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ปจํ…์ŠคํŠธ๋Š” ๋˜ํ•œ ์—ฐ์‚ฐ์ž์˜ ๋ชฉ์ ์„ ์‹๋ณ„ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. += ๋Š” () ๋ฐ˜ํ™˜ํ•˜๋ฏ€๋กœ ์ผ๋ฐ˜์ ์œผ๋กœ ์ž์ฒด ์ค„์— ์ž์ฒด ๋ช…๋ น๋ฌธ์œผ๋กœ ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด ..= ๋Š” InclusiveRange๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฏ€๋กœ ๋‹ค๋ฅธ ๋ช…๋ น์–ด ๋‚ด์—์„œ ํ‘œํ˜„์‹์œผ๋กœ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์œ„์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ..^ ๋Š” ๋ฒ”์œ„๋ณด๋‹ค ์ง€์ˆ˜์™€ ๋” ๊ด€๋ จ์ด ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

@Xaeroxe ^ ๋Š” Rust์—์„œ ์ง€์ˆ˜์™€ ์•„๋ฌด ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค(๋น„๋ก ๋‹ค๋ฅธ ์–ธ์–ด์—์„œ๋„ ๊ทธ๋ ‡๊ฒŒ ์‚ฌ์šฉ๋จ). ๋ฐ˜๋ฉด += , -= , *= ๋ชจ๋‘ Rust์— ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ^= ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ..= ์žˆ์œผ๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค.

#42134๊ฐ€ ๋ณ‘ํ•ฉ๋˜์—ˆ์œผ๋ฏ€๋กœ ์ด์ œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ตฌ์กฐ์ฒด๋ฅผ ์•ˆ์ •ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์•ž์„œ ๋งํ–ˆ๋“ฏ์ด ๊ตฌ์กฐ์ฒด๋ฅผ ๋” ๋นจ๋ฆฌ ์•ˆ์ •ํ™”ํ•˜๋Š” ๊ฒƒ์ด ๋„์›€์ด ๋˜์ง€๋งŒ ์•ˆ์ •ํ™”ํ•˜๊ธฐ ์ „์— ๊ตฌ๋ฌธ์ด ์•ˆ์ •ํ™”๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@clarcharr ์ €๋Š” ์šฐ๋ฆฌ๊ฐ€ ..= ๊ตฌ๋ฌธ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ•ด๋‹น ๊ตฌ์กฐ๋ฅผ ์•ˆ์ •ํ™”ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์‹ค์ œ๋กœ ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ์•ฝ๊ฐ„์˜ PR๋งŒ ์žˆ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

ํŽธ์ง‘ : ์›์Šค ๋‚ด๊ฐ€ ํ‹€๋ ธ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ์—์„œ ๊ตฌํ˜„ ์ค‘์ด๋ฉฐ ๊ตฌ๋ฌธ ์•ˆ์ •ํ™”๋Š” ์ตœ์ข… ์ฃผ์„ ๊ธฐ๊ฐ„์ด ๊ฒฝ๊ณผํ•  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์‹œ์ ์—์„œ ๊ตฌ์กฐ๋ฅผ ์•ˆ์ •ํ™”ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ๊ทธ๊ฒƒ๋„ ์ œ๊ฐ€ ๊ฒฐ์ •ํ•  ๋ฌธ์ œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

๋‚˜๋Š” ... ๊ฐ€ ํ•ฉ์˜๋ฅผ ์ด๋ฃจ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์˜€์„ ๋•Œ ์˜ค๋ž˜ ์ „์— ์ฃผ์ œ๋ฅผ ๋”ฐ๋ผ๊ฐ€๋Š” ๊ฒƒ์„ ์ค‘๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค. ..= ๋Š” ์–ธ๋œป ๋ณด๊ธฐ์— ์• ๊ต์ฒ˜๋Ÿผ ๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์— ์–ด์ƒ‰ํ•ด ๋ณด์ž…๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ํ›จ์”ฌ ๋” ์ค‘์š”ํ•œ ๊ฒƒ์€ ์ด ์ž์ „๊ฑฐ ์…ฐ๋”ฉ์ด ํ˜„์žฌ ํŒจํ„ด ๊ตฌ๋ฌธ์„ ๋ณ€๊ฒฝํ•  ๋งŒํผ ์ค‘์š”ํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ๊ตฌ๋ฌธ์€ ์งœ์ฆ๋‚˜!
=๋Š” +=, -=, *= ๋ชจ๋ธ์—์„œ๋„ ํ• ๋‹น์˜ ์˜๋ฏธ๊ฐ€ ์žˆ์ง€๋งŒ ..=๋Š” ๋ฌด์–ธ๊ฐ€๋ฅผ ์–ป๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋„ˆ๋ฌด ํ˜ผ๋ž€์Šค๋Ÿฝ๊ณ  ์ถ”ํ•ฉ๋‹ˆ๋‹ค.
๋ฐฐ์—ด ์ธ๋ฑ์Šค๊ฐ€ 0์—์„œ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ '...'๋Š” ์ข‹๊ณ  ์•„๋ฆ„๋‹ต์Šต๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์€ ๊ทธ๊ฒƒ์— ์ต์ˆ™ํ•ด์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@zensai
..= ๋Š” ๊ฐœ๋…์ ์œผ๋กœ == ๋ฐ <= ์™€ ๊ฐ™์€ ์—ฐ์‚ฐ์ž์—์„œ ํŒŒ์ƒ๋˜๋ฉฐ ์ด๋ฏธ Rust์— ์กด์žฌํ•˜๋ฉฐ ํ• ๋‹น์ด ์•„๋‹Œ ๋™๋“ฑ ๋น„๊ต๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

(์˜ˆ: 1..=5 ๋Š” "Range over values 1 <= x <= 5 "์˜ ์•ฝ์–ด์ด๋ฉฐ 1..5 ๋Š” "Range over values 1 <= x < 5 "๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

ํŽธ์ง‘: ๋˜ํ•œ "์ต์ˆ™ํ•ด์ง€๋Š”" ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ ํ”ผ๊ณคํ•˜๊ฑฐ๋‚˜ ์‚ฐ๋งŒํ•  ๋•Œ ์ž˜๋ชป ์ฝ๊ฑฐ๋‚˜ ์ž˜๋ชป ์ž…๋ ฅํ•˜๊ธฐ๊ฐ€ ๋” ์–ด๋ ค์šด ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์ด์™€ ๊ฐ™์€ ๊ฐœ๋ณ„ ์˜ค๋ฅ˜๋Š” ๋ฐœ์ด์œผ๋กœ ์œ ๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฏธ .. ์˜๋ฏธํ•  ๋•Œ ์‹ค์ˆ˜๋กœ ... ์ž…๋ ฅํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ณ ๋ง™๊ฒŒ๋„ ์ €๋Š” ํ•ญ์ƒ ์•ˆ์ •์ ์ธ Rust๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋ฏ€๋กœ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ด๋ฅผ ํฌ์ฐฉํ–ˆ์Šต๋‹ˆ๋‹ค. (๋‹จ, ๋…ผํ”ฝ์…˜ ๊ธ€์„ ๋งŽ์ด ์“ฐ๋Š” ํŽธ์ด๋ผ ์œ ์‚ฌ ์ƒ๋žต ๋ถ€ํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ์‹ถ๋‹ค๋Š” ๊ฐ€์ •ํ•˜์— ๊ทผ์œก๊ฒฝ๋ จ์ธ์ง€ ๊ทผ์œก๊ธฐ์–ต์ธ์ง€ ๊ธฐ์–ต์ด ๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.)

@zengsai ... ๋„ˆ๋ฌด ๋ฏธ๋ฌ˜ํ•˜๊ณ  .. ์™€ ๋„ˆ๋ฌด ๋น„์Šทํ•ด ๋ณด์ž…๋‹ˆ๋‹ค.

์–ธ์–ด๊ฐ€ ๋‹ค๋ฅธ ๊ฒƒ์„ ์˜๋ฏธํ•˜๋Š” ๋‹ค๋ฅธ ์ˆ˜์˜ ์ ์„ ๊ฐ–๋Š” ๊ฒƒ์€ ์ •๋ง ๋น„์ •์ƒ์ ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฏธํ•™์ ์œผ๋กœ ์–ดํ•„ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋ฐœ ์ด์„ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ด ๋” ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

์‹ ๊ทœ ์‚ฌ์šฉ์ž: ์Šค๋ ˆ๋“œ๊ฐ€ ๋งค์šฐ ๊ธธ๊ธฐ ๋•Œ๋ฌธ์— TL;DR์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: https://github.com/rust-lang/rust/issues/28237#issuecomment -296310123

" ์ด์™€ ๊ฐ™์€ ๊ฐœ๋ณ„ ์˜ค๋ฅ˜๋Š” ๋ฐœ์ด์œผ๋กœ ์œ ๋ช…ํ•ฉ๋‹ˆ๋‹ค."๋ผ๊ณ  ๋งํ•˜๋ฉด์„œ ์˜คํƒ€ ๋ฌธ์ œ๊ฐ€ ์ด ๋ณ€๊ฒฝ์˜ ์ฃผ์š” ์›์ธ์œผ๋กœ ์‚ฌ์šฉ๋˜์–ด์„œ๋Š” ์•ˆ ๋œ๋‹ค๊ณ  ๋งํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋น„๊ต, ".." ๋ฐ "..." ๋Œ€ "=" ๋ฐ "=="๋ฅผ ๋ณด์‹ญ์‹œ์˜ค. ์‚ฌ์šฉ์ž์˜ ์˜คํƒ€ ๋ฌธ์ œ๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด "=="์— ๋Œ€ํ•œ ๋‹ค๋ฅธ ๊ตฌ๋ฌธ์„ ์ฐพ์•„์•ผ ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๊นŒ? "=" ๋ฐ "=="๊ฐ€ ๊ดœ์ฐฎ๋‹ค๋ฉด ์™œ ".." ๋ฐ "..."๋Š” ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” 2๋…„ ์ด์ƒ Rust-lang์„ ํŒ”๋กœ์šฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ant ๊ทธ๊ฒƒ์€ ๋‚ด ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ์˜ ๋งŽ์€ ๋ถ€๋ถ„์—์„œ ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์ข‹์•„ํ•˜์ง€๋งŒ ์ด ๊ตฌ๋ฌธ์€ ์ •๋ง๋กœ ๋‚˜๋ฅผ ๋ถˆํŽธํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๋ฏธํ•™์ ์œผ๋กœ ๋งค๋ ฅ์ ์ผ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ฝ”๋“œ์˜ ์“ฐ๊ธฐ ๋ฐ ์ฝ๊ธฐ ์œ ์ฐฝํ•จ์—๋„ ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค.

@zengsai ๊ทธ๊ฒƒ์€ ์ฃผ๋กœ ์ฝ”๋“œ๋ฅผ _์ž‘์„ฑ_ํ•  ๋•Œ๊ฐ€ ์•„๋‹ˆ๋ผ ์ฝ”๋“œ๋ฅผ ๊ฒ€ํ† ํ•˜๊ณ  ์ฝ๊ณ  ์ดํ•ดํ•  ๋•Œ๋ผ๋Š” ๊ฒƒ์„ ์ดํ•ดํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฐพ๊ณ  ์žˆ์ง€ ์•Š๋‹ค๋ฉด .. vs. ... ๋†“์น  ์ˆ˜ ์žˆ์ง€๋งŒ ..= ํ™•์‹คํžˆ ๋” ๋ˆˆ์— ๋„๊ณ  ์ด๊ฒผ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๋ฏธํ•™์ ์ธ ๊ด€์ ์—์„œ ๋‚ด๊ฐ€ ..= ๊ตฌ๋ฌธ์„ ์ข‹์•„ํ•˜๋Š”์ง€ ํ™•์‹ ํ•  ์ˆ˜ ์—†์ง€๋งŒ .. ๋ฐ ... ๋Œ€ํ•ด ๋งค์šฐ ๋น„์Šทํ•˜๊ฒŒ ์ฝ๊ณ  ์žˆ๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์–ด๋””์—์„œ ์˜ค๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@zengsai = ๋Œ€ == ์—๋Š” .. ๋Œ€ ... ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ์†”๋ฃจ์…˜์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋ฌผ๋ก , C์—์„œ = ์™€ == ๋ฅผ ํ˜ผ๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค... ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ์ธ์ •๋œ ๋ฐœ์ž์ทจ์ด๋ฉฐ Python ๋ฐ Rust์™€ ๊ฐ™์€ ๋ณด๋‹ค ํ˜„๋Œ€์ ์ธ ์–ธ์–ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

  1. ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•˜๋Š” ๊ฒฝ์šฐ ์˜ค๋ฅ˜์˜ if x = y ๋ณด๋‹ค๋Š” if x == y (์ด ๋…น๊ณผ ํŒŒ์ด์ฌ์ด ๋งŒ๋“  ์ˆ˜์ •์ž…๋‹ˆ๋‹ค)
  2. ์‹ค์ˆ˜๋กœ ์ž…๋ ฅํ•˜๋ฉด x == y; ๋ณด๋‹ค๋Š” x = y; , ๋‚˜๋Š” ์•„๋ฌด๋Ÿฐ ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค ํ‘œํ˜„์— ๋Œ€ํ•œ ๊ฒฝ๊ณ ๋ฅผ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.

์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ .. ๋Œ€ ... ํ˜ผ๋™์ด ์ž˜๋ชป๋œ ๊ฒƒ์€ ๊ณ ์‚ฌํ•˜๊ณ  ๋น„์ •์ƒ์  ์ด๋ผ๋Š” ๊ฒƒ์„ ์ธ์‹ํ•  ๋ฐฉ๋ฒ•๋„ ์—†์Šต๋‹ˆ๋‹ค.

@zengsai .. ๋ฐ ... ๋Š” ๋™์ผํ•œ ํŠน์„ฑ์„ ๋ชจ๋‘ ๊ตฌํ˜„ํ•˜๊ณ  ๋ณธ์งˆ์ ์œผ๋กœ ์ƒํ˜ธ ๊ตํ™˜ ๊ฐ€๋Šฅํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์œ ํ˜•์œผ๋กœ ํ‰๊ฐ€๋ฉ๋‹ˆ๋‹ค(์ด๋Š” ์˜๋„๋œ ๊ฒƒ์ž„ ). ํ•˜๋‚˜์˜ ์˜ค๋ฅ˜๋กœ ์ธํ•ด ๋ฒ—์–ด๋‚˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ์‹ค์ œ์ ์ธ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋˜ํ•œ ์ด ๊ตฌ๋ฌธ์„ ์‹ซ์–ดํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋ถ„๋ช…ํžˆ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๊ฐ€ .. ๋ฐ ํ‘œํ˜„์‹๊ณผ ... ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ˜„์žฌ ์ƒํ™ฉ์ด @aturon ์˜ ์˜๊ฒฌ์— ๋™์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŒจํ„ด์€ "์œ ์ง€ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค." ์‚ฌ์‹ค ์ด ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์—ฐ๊ฒฐ์„ ๋Š๋Š” ๊ฒƒ์ด ๋” ๋‚ซ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด ์Šค๋ ˆ๋“œ์— ๋Œ€ํ•ด ์ƒˆ๋กœ์šด ์ฃผ์žฅ์ด ์—†์œผ๋ฉฐ ์ ๊ทน์ ์œผ๋กœ ํˆฌ์žํ•œ ์‚ฌ์šฉ์ž์˜ ๋Œ€๋‹ค์ˆ˜(๋ฐ ๋‚˜๋จธ์ง€ ์–ธ์–ด ํŒ€)๊ฐ€ ์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์„ ํ˜ธํ•œ๋‹ค๋Š” ์ ์— ๋Œ€ํ•ด ๊ฒฐ์ฝ” ํ•ฉ์˜๋ฅผ ๋ณด์ง€ ๋ชปํ•  ๊ฒƒ์ด ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋„๋ก ์˜†์— ์„œ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด ๊ฒฝํ—˜์ƒ ์œ„์•ˆ์ด ๋œ๋‹ค๋ฉด ๋Œ€๋‹ค์ˆ˜์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ ์ด ๊ธฐ๋Šฅ์ด ์‹ค์ œ๋กœ ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ฝ”๋“œ ์ „์ฒด์— ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์‚ฌ์‹ค, ๋‚˜๋Š” ์—ฌ์ „ํžˆ ํŒจํ„ด์—์„œ ... ๋ฅผ ๋น„์ถ”์ฒœํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์ •๋ง๋กœ ๋ถˆ๋งŒ์ด ์žˆ๊ณ , ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋„๋ก ์ด๋นจ์„ ๊ฐˆ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ „์ฒด lang ํŒ€์€ .. ๋ฐ ... ํ‘œํ˜„์‹์ด ๋ชจ๋‘ ์žˆ๋Š” ๊ฒƒ์ด ๋”์ฐํ•œ ์‚ฌ๋งˆ๊ท€๊ฐ€ ๋  ๊ฒƒ์ด๋ผ๋Š” ๋ฐ ๋™์˜ํ•˜์—ฌ ์ผ๋ถ€ ์‚ฌ์šฉ์ž๋Š” ์™„์ „ํžˆ ์กฐ์šฉํ•œ ์˜คํƒ€ ๋ฌธ์ œ๋ฅผ ๋””๋ฒ„๊น…ํ•˜๋Š” ๋ฐ ๋ช‡ ์‹œ๊ฐ„์„ ์†Œ๋น„ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋‚˜๋จธ์ง€ lang ํŒ€์€ ํ‘œํ˜„๊ณผ ํŒจํ„ด ์‚ฌ์ด์— ๋‹จ์ ˆ์ด ์žˆ๋Š” ๊ฒƒ์ด ์šฉ๋‚ฉ๋  ์ˆ˜ ์—†๋‹ค๊ณ  ๊ฐ•ํ•˜๊ฒŒ ๋Š๋ผ๊ณ  ์žˆ์œผ๋ฉฐ ์ €๋Š” ๋™์˜ํ•˜์ง€ ์•Š์ง€๋งŒ ์šฐ๋ฆฌ๋Š” ๋ชจ๋‘ ์ฃผ์žฅ์„ ํŽผ์ณค๊ณ  ์˜์›ํžˆ ๊ต์ฐฉ ์ƒํƒœ์— ์žˆ๋Š” ๊ฒƒ์ด ๊ฑด๊ฐ•ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@ssokolow ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์•„์ง ๋™์˜ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ด๋Ÿฐ ์ข…๋ฅ˜์˜ ์˜คํƒ€๋ฅผ ๊ฒฝ๊ณ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ "x=6"์ด์–ด์•ผ ํ•˜๋Š” ์œ„์น˜์— "x=5"๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”?

์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์˜คํƒ€๋ฅผ ํ”ผํ•˜๊ธฐ์— ์™„๋ฒฝํ•œ ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค.

์ด ๋ณ€๊ฒฝ์— ๋ถ€์ž‘์šฉ์ด ์—†๋‹ค๋ฉด ์ „์ ์œผ๋กœ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ์–ธ์–ด์˜ ๋ฏธ์  ๊ฐ๊ฐ, ์“ฐ๊ธฐ ๋ฐ ์ฝ๊ธฐ์˜ ์œ ์ฐฝํ•จ์„ ์žƒ๊ฒŒ ํ•˜์—ฌ ๋‚ด ๊ฐœ์ธ์ ์ธ ์˜๊ฒฌ์œผ๋กœ๋Š” ๊ฐ€์น˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์˜ค๋Š˜๋‚ ์˜ ๋…น์€ ์ด๋ฏธ ์ฝ๊ธฐ ๋ฐ ์“ฐ๊ธฐ ๋ฌธ์ œ์— ์ง๋ฉดํ•ด ์žˆ๊ณ , ๋” ํ”ํ•˜์ง€ ์•Š๊ณ  ์ง๊ด€์ ์ด์ง€ ์•Š์€ ๊ตฌ๋ฌธ์— ๋” ๋งŽ์€ ํ•™์Šต ๊ณก์„ ์ด ์žˆ์œผ๋ฏ€๋กœ ๋‹ค๋ฅธ Perl์„ ๋งŒ๋“ค์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

@withoutboats ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ์‚ฌ๋ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋…ผ์Ÿํ•ฉ๋‹ˆ๋‹ค. ์–ด์ฉŒ๋ฉด ์ด ์ฃผ์žฅ์€ ๋„ˆ๋ฌด ๋Šฆ์—ˆ๊ณ  ์•„๋ฌด๊ฒƒ๋„ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ƒฅ...

@zensai

๋ถ„๋ช…ํžˆ ํƒ€ํ˜‘ํ•ด์•ผ ํ•  ๋ถ€๋ถ„์ด ์žˆ์ง€๋งŒ, ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ๋“ค ์‚ฌ์ด์˜ ์ตœ์ƒ์˜ ๊ท ํ˜•์ ์— ๋Œ€ํ•ด ๊ฒฐ์ฝ” ๋™์˜ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๋Š” ์ธ์ƒ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.

๊ฐœ์ธ์ ์ธ ์ทจํ–ฅ์— ๊ด€๊ณ„์—†์ด ..= ๋Š” ๋ฒ„๊ทธ๋ฅผ ์ถ”์ ํ•˜๋Š” ๋ฐ ๋‚ญ๋น„๋˜๋Š” ๋งค์šฐ ๋งŽ์€ ์‹œ๊ฐ„์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ์ง€๋ถˆํ•ด์•ผ ํ•˜๋Š” ์ž‘์€ ๋น„์šฉ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

(์ œ๊ฐ€ ์ค‘์ ์ ์œผ๋กœ ๋‹ค๋ฃจ๋Š” ๋ถ„์•ผ๋Š” UI/UX ๋””์ž์ธ์ด๋ฉฐ ๊ทธ๋“ค์ด ๊ฐ€๋ฅด์ณ์ฃผ๋Š” ๊ฐ€์žฅ ํฐ ๊ทœ์น™ ์ค‘ ํ•˜๋‚˜๋Š” ์‹ค์ˆ˜๋ฅผ ์‰ฝ๊ฒŒ ์ €์ง€๋ฅผ ์ˆ˜ ์žˆ๋Š” ํ”ผํ•ด ๋ฐ/๋˜๋Š” ์ˆ˜์ • ์‹œ๊ฐ„์— ๋ฐ˜๋น„๋ก€ํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. )

๋‚ด ์ž‘์€ ์˜๊ฒฌ์œผ๋กœ๋Š” 5 vs. 6 ๊ฐ€ .. vs ... ๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋ช…ํ™•ํ•ฉ๋‹ˆ๋‹ค.

@zengsai ์ด ๋Œ€ํ™”๋ฅผ ์œ„ํ•ด ๋„ˆ๋ฌด ๋งŽ์€ ์ด๋ฉ”์ผ์„ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์˜ ๊ฐ์ •์„ ๋” ์ž˜ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด

@daiheitan ์ •์ƒ์ ์ธ ํ†ต์‹ ์ž…๋‹ˆ๋‹ค. ๋งˆ์Œ์— ๋“ค์ง€ ์•Š์œผ๋ฉด ์ด ์ด๋ฉ”์ผ

Rust๋ฅผ ์ฒ˜์Œ ๋ณด์•˜์„ ๋•Œ .. ๊ตฌ๋ฌธ์— ๋Œ€ํ•ด ์ •๋ง ๋†€๋ž์Šต๋‹ˆ๋‹ค. (1..10).sum() ๋Š”... 1์—์„œ 9๊นŒ์ง€์˜ ์ •์ˆ˜์˜ ํ•ฉ์ธ๊ฐ€์š”? ์ด ๊ตฌ๋ฌธ์„ ์ƒˆ๋กœ ์˜จ ์‚ฌ๋žŒ์—๊ฒŒ ์ œ์‹œํ•˜๊ณ  ๊ทธ ์˜๋ฏธ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ๋ฌป๋Š”๋‹ค๋ฉด ๊ทธ๋Š” 1์—์„œ 10์œผ๋กœ ๊ฐˆ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋งค์šฐ ๋†’์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋Š” ๊ทธ๋ ‡๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ์˜ณ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋Œ€์นญ ๊ตฌ๋ฌธ์ด ๋Œ€์นญ์„ ํ‘œํ˜„ํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋ฒ”์œ„. ์™œ 1์€ ํฌํ•จ๋˜์–ด์•ผ ํ•˜์ง€๋งŒ 10์€ ํฌํ•จ๋˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๊นŒ?

๋Œ€์นญ ๋ฒ”์œ„์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ๋น„๋Œ€์นญ ํ˜•์‹ ..= ์„ ์ถ”๊ฐ€ํ•˜๋ฉด ์‹œ๊ฐ์ ์œผ๋กœ ๋” ์ผ๊ด€์„ฑ์ด ์—†์Šต๋‹ˆ๋‹ค. ์™ผ์ชฝ์ด ํฌํ•จ๋˜๊ธฐ ์œ„ํ•ด = ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์€ ์ด์œ ๋ฅผ ๋ฌผ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์–‘์ชฝ์˜ ํฌํ•จ ๋ฒ”์œ„์— ๋Œ€ํ•ด =..= ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

Swift ๊ตฌ๋ฌธ ( ๋‹จ๋…์˜ ๊ฒฝ์šฐ ..< ๋ฐ ํฌํ•จ์˜ ๊ฒฝ์šฐ ... )๊ณผ ๊ฐ™์€ ๊ฒƒ์ด ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ  ๊ฐ€๋…์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. ์–ธ์–ด๋ฅผ ์™„์ „ํžˆ ์ฒ˜์Œ ์ ‘ํ•˜๋”๋ผ๋„ ์‰ฝ๊ฒŒ ์˜๋ฏธ๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ์ถ”์ธกํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ธฐ์–ตํ•ด์•ผ ํ•  ๊ฒƒ์ด ํ•˜๋‚˜ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค. ํŠนํžˆ Rust๊ฐ€ ์‹ ๊ทœ ์‚ฌ์šฉ์ž ์นœํ™”์„ฑ์„ ์ถ”๊ตฌํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•  ๋•Œ ์ด์™€ ๊ฐ™์€ ๊ฒƒ์ด ์„ ํƒ๋˜๊ธฐ๋ฅผ ๊ธฐ๋Œ€ํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@rkarp ์–ด๋Š ์ •๋„๊นŒ์ง€๋Š” ๊ธฐ์กด ํŽธ๊ฒฌ ๋•Œ๋ฌธ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, Rust์—๋Š” ๋งŽ์€ Python ์˜ํ–ฅ์ด ์žˆ์œผ๋ฉฐ Python์€ ๊ฐ™์€ ์ข…๋ฅ˜์˜ ๋ฐ˜๊ฐœ๋ฐฉ ๋ฒ”์œ„๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. (์ฆ‰, Python์˜ range(1, 5) ๋˜๋Š” myList[1:5] ๋‘˜ ๋‹ค Rust์˜ 1..5 ์™€ ๊ฐ™์€ ๋™์ž‘์„ ๊ฐ€์ง)

ํŒŒ์ด์ฌ์—์„œ ์ด์— ๋Œ€ํ•œ ์ •๋‹น์„ฑ์€ ์˜ค์ง ํ•˜๋‚˜์˜ ๊ตฌ๋ฌธ๋งŒ ์žˆ๊ณ  ๋ฐ˜์ฏค ์—ด๋ฆฐ ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด head, tail = myList[:pivot], mylist[pivot:] ์™€ ๊ฐ™์€ ์ž‘์—…์„ ๋” ์‰ฝ๊ฒŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ๊ณผ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ฆ‰, Rust๊ฐ€ 1.0์„ ํ†ต๊ณผํ–ˆ๋‹ค๋Š” ์ ์„ ๊ฐ์•ˆํ•  ๋•Œ ๊ธฐ์กด ์ฝ”๋“œ๋ฅผ ๊นจ๋œจ๋ฆฌ์ง€ ์•Š๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ์ƒ๋‹นํžˆ ์—„๊ฒฉํ•œ ๊ทœ์น™์ด ์žˆ์Šต๋‹ˆ๋‹ค. .. ํŒจํ„ด ์™ธ๋ถ€ ๋…์  ๋ฐ ... ๋…์  ๋‚ด๋ถ€ ํŒจํ„ด์€ ์œ ํšจํ•˜๊ฒŒ ์œ ์ง€๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

..= ๋Š” .. (๋…์ ) ๋ฐ ..= (ํฌํ•จ)๋ฅผ ๋ชจ๋“  ๊ณณ์—์„œ ํ—ˆ์šฉํ•˜๊ณ  ... ๋ฅผ .. ๋Œ€ํ•œ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๋™์˜์–ด๋กœ ์ทจ๊ธ‰ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ํŒจํ„ด์—์„œ.

..= ๋ฅผ ํ† ํฐ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋งคํฌ๋กœ์˜ :tt ๊ทœ์น™์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ์ˆ ์ ์œผ๋กœ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€๋Š” ์•Š๊ฒ ์ง€๋งŒ ์กฐ์šฉํ•œ ๋ณ€ํ™”์ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ๊ณ ๋ คํ•˜์—ฌ ๋ˆ„๊ตฐ๊ฐ€ ๊ทธ๋ ‡๊ฒŒ ํ•˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์‹ถ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (๋Œ€์•ˆ์€ .. /* why not */ = ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ์ข‹์€ ์ƒ๊ฐ์ด ์•„๋‹™๋‹ˆ๋‹ค.)

@ssokolow ์—„๋ฐ€ํžˆ a = 2 ๋Š” () ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ‘œํ˜„์‹์ด๊ณ  if ๋Š” bool ๊ธฐ๋Œ€ํ•˜๋ฏ€๋กœ ๋ถ„๋ช…ํžˆ ํ˜ธํ™˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทœ์น™์ด ์„œ์„œํžˆ ๋ฐ”๋€Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์ˆ ์ ์œผ๋กœ ..= ๋Š” ์ฒ˜์Œ 2๊ฐœ ๋’ค์— ๊ณต๋ฐฑ์ด ์—†๋Š” 3๊ฐœ์˜ ํ† ํฐ์ž…๋‹ˆ๋‹ค.

@eddyb : ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์™„์ „ํžˆ ์ดํ•ดํ•˜์ง€ ๋ชปํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์ธ์ •ํ•ฉ๋‹ˆ๋‹ค. :tt ๊ตฌ๋ฌธ ๋ถ„์„ ๋ฐฉ๋ฒ•์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ  ์ƒˆ ํ† ํฐ์„ ๋„์ž…ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์ด ์ฝ”๋“œ๋Š” ํ˜„์žฌ "๊ทœ์น™ 2" ๋ฐ "๊ทœ์น™ 4"๋ฅผ ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ดํ•ดํ•˜๋ฉด "๊ทœ์น™ 2" ๋ฐ "๊ทœ์น™ 5"๋กœ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค.

macro_rules! ex {
    ( . . )   => { "Rule 1: . ." };
    ( .. )    => { "Rule 2: .."};
    { . . = } => { "Rule 3: . . = " };
    { .. = }  => { "Rule 4: .. = " };
    { ..= }   => { "Rule 5: ..=" };
}

macro_rules! show {
    ( $($t:tt)* ) => { println!("{}", ex!($($t)*)) };
}

fn main() {
    show!(..);
    show!(..=);
}

์•„๋‹ˆ์š”, ํ† ํฐ์ด ์ •์˜๋˜๋Š” ๋ฐฉ์‹์ด ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. @jseyfried ๋Š” ๊ฒฐ๊ณผ๋ฅผ ๋” ์ž˜ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ์ˆ ์ ์œผ๋กœ ์ด๊ฒƒ์€ ๊ตฌ๋ฌธ ๋ถ„์„ ์˜ค๋ฅ˜๊ฐ€ ์•„๋‹ˆ๋ผ Rust์˜ ์œ ํ˜• ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค. a = 2๋Š” ()๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ‘œํ˜„์‹์ด๋ฉฐ, bool์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋ถ„๋ช…ํžˆ ํ˜ธํ™˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@xfix ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ง€๋‚œ๋ฒˆ์— ์˜คํƒ€๋ฅผ ๋ƒˆ์„ ๋•Œ ์ œ๋Œ€๋กœ ์ฃผ์˜๋ฅผ ๊ธฐ์šธ์ด์ง€ ์•Š์•˜๊ณ  ์—ฌ์ „ํžˆ ํ‘œํ˜„ ์ง€ํ–ฅ ์–ธ์–ด๋กœ ์ƒ๊ฐํ•˜๋Š” ๋ฐ ์™„์ „ํžˆ ์ต์ˆ™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋Œ“๊ธ€ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ..= ๊ตฌ๋ฌธ์ด ๋งˆ์Œ์— ๋“ค์ง€ ์•Š์œผ๋ฉฐ ํŒจํ„ด์—์„œ ... ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์— ๋ฐ˜๋Œ€ํ•ฉ๋‹ˆ๋‹ค. ์˜คํƒ€ ์˜ค๋ฅ˜๊ฐ€ ๋‘๋ ค์šฐ๋ฉด ... ๋˜๋Š” ..= ๋Œ€์‹  RangeInclusive { start, end } ๊ตฌ์กฐ์ฒด๋ฅผ ์•ฝ์–ด๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๋ฐฉ๊ธˆ ๊นจ๋‹ฌ์€ ์ž ์žฌ์ ์ธ ๋ชจํ˜ธ์„ฑ:

if let 5..=x { ... }

@clarcharr ๊ทธ๋ž˜๋„ ์ปดํŒŒ์ผ๋˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

rustc 1.17.0 (56124baa9 2017-04-24)
error: unexpected token: `=`
 --> <anon>:3:13
  |
3 |     if let 5..=x {
  |             ^^

error: aborting due to previous error

@clarcharr @kennytm
..= ๋ฅผ ํ•˜๋‚˜์˜ ์—ฐ์‚ฐ์ž๋กœ ๋„์ž…ํ•˜๋ฉด ์˜ค๋ฅ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

error: expected one of `::` or `=`, found `{`
 --> <anon>:3:13
  |
3 |     if let 5..=x {
  |                  ^

error: aborting due to previous error

์ง€๊ธˆ์ฒ˜๋Ÿผ let x=10; if let 5..x {}

๋”ฐ๋ผ์„œ ์ด "๋ชจํ˜ธ์„ฑ"์€ ์ปดํŒŒ์ผ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ if let 5..x {} ๋ณด๋‹ค ๋” ๋ชจํ˜ธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@Boscop ์š”์ ์€ ํ˜„์žฌ 5.. ๋ฅผ Some(5) ์™€ ๊ฐ™์€ ํŒจํ„ด์œผ๋กœ ์ทจ๊ธ‰ํ•˜๋ฉด if let 5.. = x ๊ฐ€ let Some(5) = x ์™€ ์œ ์‚ฌํ•˜๊ณ  ํ›„์ž๊ฐ€ ์ปดํŒŒ์ผ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚ด ์˜๊ฒฌ์€ 5.. ๊ฐ€ ํŒจํ„ด์ด ์•„๋‹ˆ๋ฏ€ ๋กœ ..= ๋„์ž…์— ๋Œ€ํ•œ if let ํ˜ธํ™˜์„ฑ ์œ„ํ—˜์ด ์—†์Œ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

์ด ๊ธฐ๋Šฅ์„ ๋„์ž…ํ•˜๊ณ  ํŒจํ„ด์—์„œ ..= ๋ฐ .. ๋ฅผ ๋ชจ๋‘ ํ—ˆ์šฉํ•˜๋ฉด if let 5..=x ๋Š” ํ•ญ์ƒ if let 5.. = x ์ด์–ด์•ผ ํ•˜๋ฉฐ ์ปดํŒŒ์ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. if let (single expression) ๋Š” ์˜๋ฏธ๊ฐ€ ์—†์œผ๋ฏ€๋กœ ๋ชจํ˜ธ์„ฑ์ด ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@kennytm ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ ๋‘˜ ๋‹ค ์ปดํŒŒ์ผํ•˜์ง€ ์•Š์„ 2๊ฐ€์ง€ ๋‹ค๋ฅธ ๋ชจํ˜ธ์„ฑ์„ ๋ณด์—ฌ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. (๊ทธ๊ฐ€ ๋ฌด์—‡์„ ์˜๋ฏธํ–ˆ๋Š”์ง€๋Š” ๋ถ„๋ช…ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋‹ค์†Œ ๋ชจํ˜ธํ–ˆ์Šต๋‹ˆ๋‹ค.)

@daboross kennytm์ด ๋งํ–ˆ๋“ฏ์ด 5.. ๋Š” ํŒจํ„ด์ด ์•„๋‹ˆ๋ฉฐ ์ง€๊ธˆ๋„ ์ปดํŒŒ์ผ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์€ ..= ๋ฅผ ์—ฐ์‚ฐ์ž๋กœ ์ถ”๊ฐ€ํ•ด๋„ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ชจํ˜ธํ•จ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ค‘์š”ํ•œ ๊ฒƒ์€ ์ด์ œ ..= ๋ฅผ ํ•˜๋‚˜์˜ ์—ฐ์‚ฐ์ž๋กœ ๊ตฌ๋ฌธ ๋ถ„์„ํ•  ์ˆ˜ ์—†์ง€๋งŒ ์ผ๋‹จ ํ•˜๋‚˜์˜ ์—ฐ์‚ฐ์ž๋กœ ๊ตฌ๋ฌธ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋ฉด ๋ชจํ˜ธ์„ฑ์ด ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

5.. ์€ ํ˜„์žฌ ์œ ํšจํ•œ ํŒจํ„ด์ด ์•„๋‹ˆ๋ฉฐ ๋ฐ˜์ฏค ๋‹ซํžŒ ๊ฐ„๊ฒฉ ํŒจํ„ด๋„ ์—†์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋ฐ˜ ํ์‡„ ๊ฐ„๊ฒฉ ํŒจํ„ด์˜ ๋ถ€์กฑ์€ ๋ฒ”์œ„ ํ‘œํ˜„์‹๊ณผ ๋น„๊ตํ•  ๋•Œ ์ข…์ข… ๋ถˆ์ผ์น˜์˜ ์›์ธ์œผ๋กœ ๊ฐ„์ฃผ๋˜๊ณ  ํŒจํ„ด์— ๋Œ€ํ•ด์„œ๋„ ๊ตฌํ˜„๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์™„์ „ํ•œ ์ •์ˆ˜ ์ผ์น˜๋ฅผ ์œ„ํ•ด ๋‚˜์ค‘์— ํŒจํ„ด์—์„œ ๊ฐ„๊ฒฉ์˜ ํ•œ์ชฝ์„ ์ƒ๋žตํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ @clarcharr์˜ ๊ด€์ฐฐ์ด ํ˜„์žฌ ๋ฌธ๋ฒ•์„ ๊ณ ๋ คํ•  ๋•Œ ๋ฐ˜๋“œ์‹œ ๋ชจํ˜ธ์„ฑ์„ ์ง€์ ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ, ํŒจํ„ด์— ..= ๋ฅผ ์‚ฌ์šฉํ•˜๋ผ๋Š” ์ œ์•ˆ๊ณผ ์ถฉ๋Œํ•  ์ˆ˜ ์žˆ๋Š” ์ž ์žฌ์ ์ธ ๋ฏธ๋ž˜ ํ™•์žฅ์„ ๊ณ ๋ คํ•  ๋•Œ ํ™•์‹คํžˆ ๋ชจํ˜ธํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฅผ ์—ผ๋‘์— ๋‘๊ณ  ์—ฌ๊ธฐ์— ๋‹ค๋ฅธ ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ^ ๋Š” ํ˜„์žฌ IIRC์˜ ํ‘œํ˜„์‹ ์ปจํ…์ŠคํŠธ์—์„œ๋งŒ ์‚ฌ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒ๋‹นํžˆ ๊ดœ์ฐฎ์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

(์ง€๊ธˆ์€ ๊ตฌ์กฐ์ฒด๋ฅผ ์•ˆ์ •ํ™”ํ•˜๊ณ  ๊ตฌ๋ฌธ์€ ๋‚˜์ค‘์— ์•ˆ์ •ํ™”ํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ์ด์œ ์ž…๋‹ˆ๋‹ค.)

@nagisa RangeFrom ํŒจํ„ด์ด ์ง€์›๋˜๊ธฐ ์ „์— ..= ํ† ํฐ์ด ์ถ”๊ฐ€๋˜๋ฉด if let ์— ๋Œ€ํ•œ ์ถฉ๋Œ์€ ์—†์Šต๋‹ˆ๋‹ค. x <- y (์œ„์น˜) ๋Œ€ x < -y (๋ฏธ๋งŒ + ์Œ์ˆ˜)์™€ ๊ฐ™์ด .. ์™€ = ์‚ฌ์ด์— ๊ณต๋ฐฑ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ช…ํ™•ํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

( ^ ๋Š” ๋ฐฐํƒ€์  -or ์—ฐ์‚ฐ์ž์ด๋ฏ€๋กœ ํฌํ•จ ๋ฒ”์œ„์— ..^ ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•„์ด๋Ÿฌ๋‹ˆํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.)

๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ˆ˜์ฒœ ๊ฐœ์˜ ๋ฒ”์œ„ ์ค‘ ์ƒ๋‹น์ˆ˜๋Š” ์™„์ „ํžˆ ๋‹ซํ˜€ ์žˆ๊ณ  ํ•œ๋‘ ๊ฐœ๋Š” ์ž˜๋ชป๋œ ๋ฐฉํ–ฅ์œผ๋กœ ๋ฐ˜์ฏค ์—ด๋ ค ์žˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ์ถ”๊ฐ€ ๊ตฌ๋ฌธ์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 1..(n+1) ์“ฐ๊ธฐ ์–ด๋ ต์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

end = T::max_value()์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

2017๋…„ 5์›” 29์ผ 16์‹œ 33๋ถ„์— "Diggory Hardy" [email protected]์ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ˆ˜์ฒœ ๊ฐœ์˜ ๋ฒ”์œ„ ์ค‘ ์ƒ๋‹น์ˆ˜๊ฐ€ ์™„์ „ํžˆ ๋‹ซํ˜€ ์žˆ์Šต๋‹ˆ๋‹ค.
์–ด์ฉŒ๋ฉด ํ•œ๋‘ ๊ฐœ๋ผ๋„ ์ž˜๋ชป๋œ ๋ฐฉํ–ฅ์œผ๋กœ ๋ฐ˜์ฏค ์—ด๋ ธ์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ์—ฌ์ „ํžˆ
์ถ”๊ฐ€ ๊ตฌ๋ฌธ์˜ ํ•„์š”์„ฑ์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. 1..(n+1) ์“ฐ๊ธฐ๊ฐ€ ๊ทธ๋ ‡๊ฒŒ ์–ด๋ ต์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/rust-lang/rust/issues/28237#issuecomment-304662258 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AApc0ipynL_qrZqUBldOJOX046RNY2H_ks5r-skwgaJpZM4F4LbW
.

๋‚˜๋Š” ๋ฐ˜ ํ์‡„ ๋ฒ”์œ„์— ๋Œ€ํ•œ ๋ฐฉ๋ฒ•์„ ..=๋ณด๋‹ค ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.

2017๋…„ 5์›” 29์ผ 16์‹œ 35๋ถ„์— "Simonas Kazlauskas" [email protected]๊ฐ€ ์ผ์Šต๋‹ˆ๋‹ค.

end = T::max_value()์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

2017๋…„ 5์›” 29์ผ 16์‹œ 33๋ถ„์— "Diggory Hardy" [email protected]์ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ˆ˜์ฒœ ๊ฐœ์˜ ๋ฒ”์œ„ ์ค‘ ์ƒ๋‹น์ˆ˜๊ฐ€ ์™„์ „ํžˆ
๋‹ซํžŒ, ์–ด์ฉŒ๋ฉด ํ•œ๋‘ ๊ฐœ๋ผ๋„ ์ž˜๋ชป๋œ ๋ฐฉํ–ฅ์œผ๋กœ ๋ฐ˜์ฏค ์—ด๋ ธ์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ์—ฌ์ „ํžˆ
์ถ”๊ฐ€ ๊ตฌ๋ฌธ์ด ํ•„์š”ํ•œ์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. 1..(n+1) ์–ด๋ ต์ง€ ์•Š์Šต๋‹ˆ๋‹ค
์“ฐ๋‹ค.

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/rust-lang/rust/issues/28237#issuecomment-304662258 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AApc0ipynL_qrZqUBldOJOX046RNY2H_ks5r-skwgaJpZM4F4LbW
.

๋‚˜๋Š” ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์ด๊ฒฌ์ด ์—†๋‹ค๊ณ  ํ™•์‹ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฏธ ๊ทธ๊ฒƒ๋“ค์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ํŠน์„ฑ๊ณผ ์œ ํ˜•์„ ์•ˆ์ •ํ™”ํ–ˆ์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ๋ฌธ์— ๋Œ€ํ•œ ๋ฐ”์ดํฌ์‰๋”ฉ์œผ๋กœ ์ธํ•ด ํ•ต์‹ฌ ๊ธฐ๋Šฅ ์ž์ฒด์˜ ์•ˆ์ •ํ™”๊ฐ€ ์ง€์—ฐ๋˜์ง€ ์•Š๋„๋ก ํ•˜์‹ญ์‹œ์˜ค.

end = T::max_value()์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

2^64 ๊ฐ’ ๋˜๋Š” 2^8 ๊ฐ’์„ ๋ฐ˜๋ณตํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์˜ˆ๋ฅผ ๋“ค์–ด u32 ์˜ ๋งˆ์ง€๋ง‰ ๋ช‡ ๊ฐœ ๊ฐ’์— ๋Œ€ํ•ด์„œ๋งŒ ๋ฐ˜๋ณตํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ๋ฃจํ”„ ๋‚ด๋ถ€์— ํ•˜๋‚˜๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฌ์šด ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ถˆ๋ถ„๋ช…ํ•œ ์ด์œ ๋กœ 2^B-1 ๋กœ ๋ฐ˜๋ณตํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ๋ฃจํ”„ ๋์— ํ•ญ์ƒ if i == END { break; } ๋ฅผ ๋ถ™์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ‘œ์ค€ ๋ถ€ํ˜ธ ์—†๋Š” ์ •์ˆ˜๊ฐ€ 2^32 ๋˜๋Š” 2^64 ๊ฐ’์„ ์ง€์›ํ•œ๋‹ค๊ณ  ํ•ด์„œ ํ‘œํ˜„ ๊ฐ€๋Šฅํ•œ ๊ฐ€์žฅ ๋†’์€ ๊ฐ’์ด ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  u8 ๋ฌด์–ธ๊ฐ€๋ฅผ ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด CPU๊ฐ€ ์นด์šดํ„ฐ์— u32 ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฝ๋‹ค๋Š” ๊ฒƒ์„ ์žŠ์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

๊ทธ๋Ÿฌ๋‚˜ ํ์‡„ ๋ฒ”์œ„ ์ƒ์„ฑ๊ธฐ ๊ตฌ๋ฌธ์ด ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋”๋ผ๋„ ๋ณ€๊ฒฝ์— ๋Œ€ํ•œ ํŒ€์˜ ์ฃผ์žฅ์„ ๋ฐ˜๋ฐ•ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์˜ค ๊ธ€์Ž„:/

์ด ๋„ค ๊ฐ€์ง€๊ฐ€ ๋ชจ๋“  ํฌ๊ด„์„ฑ ์˜ต์…˜์„ ํฌ๊ด„ํ•˜๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

1...10
1>..10
1..<10
1>.<10

๋‚˜๋Š” ๋ถˆํ‰๋“ฑ ์—ฐ์‚ฐ์ž๊ฐ€ ์œ ์น˜์›๋ถ€ํ„ฐ ๋ชจ๋“  ์‚ฌ๋žŒ์˜ ๋งˆ์Œ์— ๋‘๋“œ๋ ค์ ธ ์™”๋‹ค๋Š” ์ ์„ ๊ฐ์•ˆํ•  ๋•Œ ์ถ”๊ฐ€ ์„ค๋ช… ์—†์ด ๊ทธ๋“ค์ด ์˜๋ฏธํ•˜๋Š” ๋ฐ”๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๊ฒƒ์ด ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ๊ณ ํ†ต์ด ๋ ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋˜๋Š” ๋ถ€๋“ฑ์‹์„ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1...10
1<..10
1..>10
1<.>10

... ๋งˆ์ง€๋ง‰ ์‚ฌ๋žŒ์ด ํ™”๋‚œ ์นดํŠธ๋งจ์ฒ˜๋Ÿผ ๋ณด์ด์ง€ ์•Š๋„๋ก.

@vegai ๊ทธ๋ฆฌ๊ณ  ํ™•์‹คํžˆ ์ œ๊ฑฐ๋˜์ง€ ์•Š์„ ๊ธฐ์กด a..b ๊ตฌ๋ฌธ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ์š”, ์ƒˆ๋กœ์šด ๊ตฌ๋ฌธ ์˜ต์…˜์„ ์ œ์•ˆํ•˜๋Š” ๊ฒƒ์ด ์–ด๋–ค ๋ฌธ์ œ๋„ ํ•ด๊ฒฐ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ , ๋‘ ๊ฐ€์ง€ "์ž ์žฌ์  ๋ชจํ˜ธ์„ฑ"์ด ์ œ๊ธฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • if let 5..= x -- ์–ธ๊ธ‰ํ•œ ๋ฐ”์™€ ๊ฐ™์ด ์ด๊ฒƒ์€ ์ง€๊ธˆ ์€ ์‹ค์ œ๋กœ ๋ชจํ˜ธํ•˜์ง€ ์•Š์ง€๋งŒ ์ผ์ข…์˜ ๊ทธ๋Ÿด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— ์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ๋ชจํ˜ธ์„ฑ์€ ์ž์ฃผ ๋ฐœ์ƒํ•˜๋ฉฐ ํ† ํฌ๋‚˜์ด์ €์—์„œ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ํŒŒ์„œ์—์„œ ..= ๋ฅผ ํ† ํฐ์œผ๋กœ ๊ฐ„์ฃผํ•˜๋ฉด ๋‚˜์ค‘์— 5.. ํŒจํ„ด์„ ์ถ”๊ฐ€ํ•˜๋”๋ผ๋„ ๋ชจํ˜ธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. .. ์™€ = ์‚ฌ์ด์— ๊ณต๋ฐฑ์„ ์“ฐ๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค(์˜ˆ: let 5.. = x ).
  • ๊ฑฐ์‹œ์  ๊ทœ์น™์— ๋Œ€ํ•œ ๋ชจํ˜ธ์„ฑ. ์ด๊ฒƒ์€ ์ฐธ์œผ๋กœ ๊ณ ํ†ต์Šค๋Ÿฝ๊ณ  ๋ถˆํ–‰ํ•œ ์ผ์ด๋ฉฐ ์šฐ๋ฆฌ๊ฐ€ "๋ณตํ•ฉ ํ† ํฐ" ์„ธํŠธ๋ฅผ ์ตœ์ข… ์‚ฌ์šฉ์ž์—๊ฒŒ ๋…ธ์ถœํ•˜๋Š” ๊ฒƒ์„ ํ”ผํ•˜๋Š” "๋งคํฌ๋กœ 2.0"์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์œผ๋กœ ์ด๋™ํ•œ ์ด์œ  ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

    • ๊ฒฐ๊ตญ, ์šฐ๋ฆฌ๋Š” ํ•„์š”ํ•œ ๊ฒฝ์šฐ ํŠน๋ณ„ํ•œ ๊ฒฝ์šฐ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด macro_rules! back-compat๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ... ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ์™ธ์—๋Š” ์ด๋Ÿฐ ์ข…๋ฅ˜์˜ ๋ฌธ์ œ๋ฅผ ํ”ผํ•  ์ˆ˜๋Š” ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

ํฌํ•จ ๋ฒ”์œ„๋ฅผ ์•ˆ์ •ํ™”ํ•˜๊ธฐ ์ „์— ๋ฌธ์ œ #42401๋„ ์ˆ˜์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•ˆ์ •ํ™” ํ›„์—๋Š” ์ˆ˜์ •์ด ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

@est31 ์ข‹์€ ์ , ๋ฌธ์ œ ํ—ค๋“œ์˜ ์ฒดํฌ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ™•์ธ๋œ str ์Šฌ๋ผ์ด์‹ฑ ์ž์ฒด๊ฐ€ ๋ถˆ์•ˆ์ •ํ•˜๋ฉฐ ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ์ˆ˜์ •ํ•ด๋„ ํฌํ•จ ๋ฒ”์œ„๊ฐ€ ์ „ํ˜€ ์ฐจ๋‹จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์˜ค, @nagisa ๊ฐ€ ๋งž์Šต๋‹ˆ๋‹ค. ๋ฒ”์œ„ ๊ตฌ๋ฌธ๊ณผ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋จธ๋ฆฌ์—์„œ ๋‹ค์‹œ ์ œ๊ฑฐ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚ด ์‹ค์ˆ˜. ๋ฒ„๊ทธ๋Š” get ๊ตฌํ˜„์— ์žˆ์œผ๋ฏ€๋กœ str_checked_slicing ๊ธฐ๋Šฅ์œผ๋กœ ๋ณดํ˜ธ๋ฉ๋‹ˆ๋‹ค.

    impl SliceIndex<str> for ops::RangeToInclusive<usize> {
        type Output = str;
        #[inline]
        fn get(self, slice: &str) -> Option<&Self::Output> {
            if slice.is_char_boundary(self.end + 1) {
                Some(unsafe { self.get_unchecked(slice) })
            } else {
                None
            }
        }
    [...]

์ œ๊ฑฐ๋จ

๋˜ ๋‹ค๋ฅธ ์ฒดํฌ๋ฐ•์Šค ์—…๋ฐ์ดํŠธ: PR https://github.com/rust-lang/rust/pull/42134 ์ ์šฉ https://github.com/rust-lang/rfcs/pull/1980 ๋น„ํ‹€๊ธฐ

๋ฒ”ํ”„: ์ ์–ด๋„ ๊ตฌ์กฐ์ฒด๋ฅผ 1.20์—์„œ ์•ˆ์ •ํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

ํฌ๊ด„์ ์ธ ๋ฒ”์œ„ ๊ตฌ๋ฌธ์„ ์œ„ํ•ด C++์—์„œ ์œ ๋ช…ํ•œ go-to ์—ฐ์‚ฐ์ž ๋ฅผ ์ฐจ์šฉํ•˜๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ๐Ÿ˜›

@nikomatsakis ๋ฐ @rust-lang/libs(ํƒœ๊ทธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค), ์•ˆ์ •ํ™”์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์กฐ์ฒด๋ฅผ ๋‹ค๋ฅธ ์ถ”์  ๋ฌธ์ œ๋กœ ์ด๋™ํ•œ PR์„ ์ œ์ถœํ•˜๋ฉด ๊ธฐ๋ถ„์ด ์–ด๋–ป๊ฒ ์Šต๋‹ˆ๊นŒ? ๊ฑฐ๊ธฐ? ์ƒˆ๋กœ์šด ๊ตฌ๋ฌธ์ด ๊ตฌํ˜„/์ •์ฐฉ๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋™์•ˆ ์•ˆ์ •ํ™”๋ฅผ ๋” ๋นจ๋ฆฌ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

cc @rust-lang/libs (ํŒ€์˜ ์‚ฌ๋žŒ๋“ค๋งŒ ์ž์‹ ์ด๋‚˜ ๋‹ค๋ฅธ ํŒ€์— ํƒœ๊ทธ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Œ)

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค, @eddyb!

@clarcharr ๊ธฐ๋ฐ˜ https://github.com/rust-lang/rust/pull/42275#discussion_r119211211 , ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๊ฐ์‚ฌ ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ตฌ๋ฌธ ์ œ์•ˆ์„ ์œ„ํ•œ ๊ธฐ์ฐจ์— ๋„ˆ๋ฌด ๋Šฆ์—ˆ๋‚˜์š”?
ํ˜„์žฌ๋Š” ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์Šฌ๋ผ์ด์Šค์— ๊ฐ’์„ ํ• ๋‹นํ•˜๋ ค๊ณ  ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

for i in a..b {} // [a..b) 
for i in a..+b {} //[a..b] 
for i in a-..b {} //(a..b) 
for i in a-..+b {} // (a..b]

์ด ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด ํ–ฅํ›„ ๋ฒ”์œ„์— ๋Œ€ํ•œ Add ๊ตฌํ˜„์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. Add ๊ตฌํ˜„์ด ๋ฌด์—‡์„ ํ•˜๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๊ฒƒ์ด ๋ฌธ์ œ์ธ์ง€๋Š” ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ›„ํ–‰ ํ”Œ๋Ÿฌ์Šค์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์ ‘๋‘์‚ฌ๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

a.. , ..b ๋ฐ .. ๋Š” Rust์—์„œ ์œ ํšจํ•œ ๊ตฌ์กฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์ˆ˜ํ•™ ์—ฐ์‚ฐ์—์„œ ๋ชจํ˜ธ์„ฑ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค :/

a... / a..= / a..+ ๋Š” ์œ ํšจํ•˜์ง€ ์•Š๊ฒ ์ฃ ? ๋์ ์„ ํฌํ•จํ•˜๋Š” ๋ฌด์ œํ•œ ๋ฒ”์œ„๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์€ ์‹ค์ œ๋กœ ์˜๋ฏธ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” Add ์— ๋Œ€ํ•ด ๋„ˆ๋ฌด ๊ฑฑ์ •ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฒ”์œ„์™€ ๊ด€๋ จํ•˜์—ฌ ๋„ˆ๋ฌด ์ผ๋ฐ˜์ ์ธ ์ผ์ด ์•„๋‹Œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์›ํ•œ๋‹ค๋ฉด (x..+y) + z ?

ํŽธ์ง‘: ์‹ ๊ฒฝ์“ฐ์ง€ ๋งˆ์„ธ์š”, ๋ฐฉ๊ธˆ ๋‹น์‹ ์ด ์˜๋ฏธํ•˜๋Š” ๋ฐ”๋ฅผ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. ๋ชจํ˜ธํ•œ a..+b ์ด๊ฒ ์ฃ ? ์ง€๊ธˆ ๋‹น์žฅ์€ a.. + b ํ•ฉ๋‹ˆ๋‹ค.

@daboross ์ด๊ฒƒ์ด ์ข‹์€ ์•„์ด๋””์–ด์ธ์ง€ ๋‚˜์œ ์•„์ด๋””์–ด์ธ์ง€ ๋งํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ ์ด ๊ตฌํ˜„(๋˜๋Š” ์•ฝ๊ฐ„์˜ ๋ณ€ํ˜•)์€ ๋ฏธ๋ž˜์˜ ๋ฒ”์œ„์— ๋Œ€ํ•ด ์›ํ•˜๋Š” ๊ฒƒ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

impl<T> Add<T> for RangeFrom<T> where T: Add<T> {
    type Output = RangeFrom<T>;
    fn add(self, rhs: T) -> RangeFrom<T> {
        (self.start + rhs)..
    }
}

์ด ํŠน์ • impl์€ ์ข‹์€ ์ƒ๊ฐ์ผ ์ˆ˜๋„ ์žˆ๊ณ  ์•„๋‹ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ๊ฐ€๋Šฅํ•œ ๋ฏธ๋ž˜์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€๋กœ ์ƒ๊ฐํ•ด๋‚ด๋Š” ๋ฐ ๋„ˆ๋ฌด ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด ๊ตฌ๋ฌธ ๊ฒฐ์ •์œผ๋กœ ์ธํ•ด ์ด๊ฒƒ ๋˜๋Š” ์ด์™€ ์œ ์‚ฌํ•œ ๊ฒƒ์ด ์ถ”๊ฐ€๋  ๊ฐ€๋Šฅ์„ฑ์„ ๋ฐฐ์ œํ•˜๋Š” ๊ฒƒ์€ ์ข‹์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‚ด ๋˜ ๋‹ค๋ฅธ ๊ด€์‹ฌ์‚ฌ๋Š” ... ๋ฅผ ๋ฌด์‹œํ•˜๋Š” ์š”์ ์€ ์˜คํƒ€๋ฅผ ์ธ์‹ํ•˜๊ธฐ ์–ด๋ ค์šด ๊ธฐํšŒ๋ฅผ ์ตœ์†Œํ™”ํ•˜๊ณ  ๊ด„ํ˜ธ๊ฐ€ ์ถ”์ƒ a..+b ์˜ ๋‘ ๊ฐ€์ง€ ๋‹ค๋ฅธ ์˜๋ฏธ ์‚ฌ์ด์˜ ์ฐจ์ด๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ ๋ฐฉํ–ฅ์œผ๋กœ ๋Œ์•„๊ฐ€๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ ํ˜„์žฌ .. ๋ฐ ์ œ์•ˆ๋œ ๋™์•ˆ "์™„์ „ํ•จ์„ ์œ„ํ•ด ์ข‹์ง€ ์•Š์€ ๊ฒƒ"์„ ๋„˜์–ด์„œ a-..b ๋ฐ a-..+b ๋Œ€ํ•œ ํ™•์‹คํ•œ ์ •๋‹น์„ฑ์„ ์•„์ง ๋ณด์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ..= ๋‘˜ ๋‹ค ์•Œ๋ ค์ง„ ์œ ํšจํ•œ ๊ทผ๊ฑฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ‘œํ˜„์‹ ๊ตฌ๋ฌธ์ด ๋ชจํ˜ธํ•ด์ง€๊ธฐ ๋•Œ๋ฌธ์— + ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

ํŽธ์ง‘: ๋น„๋ก <Range as Add<{integral}>>::Output = InclusiveRange ์˜ ๊ตฌํ˜„์„ ๋๋‚ด๊ธฐ ๋•Œ๋ฌธ์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์™„์ „ํžˆ ํฌ๊ด„์ ์ธ ๋ฒ”์œ„๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

..! ๋ณ€ํ˜•์„ ์ œ์•ˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. .. ์ƒ์‚ฐ์ ์ธ ์šด์œจ์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ๋งˆ์ง€๋ง‰ ์ ์— ์ถ”๊ฐ€ ๊ฐ•์กฐ๋ฅผ ๋‘์–ด ๋” ๋ˆˆ์— ๋„๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋ฌผ๋ก  ! ์—ฐ์‚ฐ์ž์™€ ์ถฉ๋Œํ•˜์ง€๋งŒ ์†”์งํžˆ ๋งํ•ด์„œ ๋ฐ”์ธ๋”ฉ๋œ ํ•˜์œ„ ํ‘œํ˜„์‹์— ! ๋ฅผ ๋„ฃ์–ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์„ ์ƒ์ƒํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

..! ๋Š” ์ง๊ด€์„ฑ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„์ง ๊ตฌ๋ฌธ์— ์ต์ˆ™ํ•˜์ง€ ์•Š์€ ์ดˆ๋ณด์ž๋Š” ..! ๋ฅผ "์ตœ๋Œ€, ํ•˜์ง€๋งŒ..."์„ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์‰ฝ๊ฒŒ ์˜คํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ "...์˜ ๋น„ํŠธ ๋ณด์ˆ˜๊นŒ์ง€ ๋ฒ”์œ„"์— ๋Œ€ํ•œ ๊ตฌ๋ฌธ๊ณผ ์ถฉ๋Œํ•ฉ๋‹ˆ๋‹ค( + ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ์œ ์‚ฌํ•œ ์ƒํ™ฉ์— ๋†“์ด๊ฒŒ ๋จ).

๋™์˜ํ•˜๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹ค๋ฅธ ํ•œํŽธ์œผ๋กœ ..= ํ• ๋‹น ์—ฐ์‚ฐ์ž ์ค‘ ํ•˜๋‚˜๋กœ ์ž˜๋ชป ํ•ด์„๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ํ• ๋‹น ์—ฐ์‚ฐ์ž๋ผ๋ฉด ๋ฌด์—‡์— ํ• ๋‹นํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

@snuk182 ์˜ ์ œ์•ˆ์— ๋”ฐ๋ผ:

a...b // [a; b] shorthand for RangeIncusive
a..-b // [a; b) new Range shorthand 
a..b // [a; b) old Range shorthand exists for compatibility

๋‹ค๋ฅธ ์กฐํ•ฉ์ด ํ•„์š”ํ•œ์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ๋‚˜์ค‘์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

a-..b // (a; b]
a-.-b // (a; b)  

๋งˆ์ง€๋ง‰ ์˜ต์…˜์ด ์•ฝ๊ฐ„ ์ด์ƒํ•ด ๋ณด์ด์ง€๋งŒ. ^_^

๋‹จํ•ญ ์—ฐ์‚ฐ์ž(์˜ˆ: a..-b , a..!b , a..*b , a..&b ๋˜๋Š” a?..b )๋ฅผ ํฌํ•จํ•˜๋Š” ๊ตฌ๋ฌธ ์ œ์•ˆ์„ ์ค‘๋‹จํ•˜์‹ญ์‹œ์˜ค. ๋ฐ›์•„๋“ค์˜€๋‹ค.

..! ์ง๊ด€๋ ฅ์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค. ์•„์ง ๊ตฌ๋ฌธ์— ์ต์ˆ™ํ•˜์ง€ ์•Š์€ ์ดˆ๋ณด์ž๋Š” ์‰ฝ๊ฒŒ ์˜คํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค..! "~๊นŒ์ง€, ๊ทธ๋Ÿฌ๋‚˜ ~๊นŒ์ง€"๋ฅผ ์˜๋ฏธํ•˜๊ธฐ ์œ„ํ•ด

..= ๋Š” ์ง๊ด€์„ฑ์— ๋Œ€ํ•ด ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. = ์‚ฌ๋žŒ์€ ๋ˆ„๊ตฌ๋‚˜ ๊ฐ๋™์ด๋‚˜ ๋น„๊ต๋ฅผ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค. ..= ๋ณผ ๋•Œ๋งˆ๋‹ค ์ด ๊ตฌ๋ฌธ์ด ์‹๋ณ„ ๋ฌธ์ œ๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ํ•ด๊ฒฐํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์ธ์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋“ฑํ˜ธ๊ฐ€ ์—ฌ๊ธฐ์„œ ๋ฌด์—‡์„ ํ•˜๋Š”์ง€ ๊ถ๊ธˆํ•˜์ง€ ์•Š์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋งค์šฐ ์ง๊ด€์ ์ด๊ณ  ํ˜„์žฌ ๊ตฌ๋ฌธ๊ณผ ์ผ์น˜ํ•˜๋Š” ์œ ์ผํ•œ ์ œ์•ˆ ๊ตฌ๋ฌธ์€ ... ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฐฐ๊ฐ€ ์ถœํ•ญํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ƒˆ๋กœ ์˜จ ์‚ฌ๋žŒ๋“ค์€ ์–ด์จŒ๋“  ๋ฌธ์„œ๋ฅผ ์ž์ฃผ ๋ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ... ๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๊ทธ๋“ค์€ ๋ฌธ์„œ๋ฅผ ๋ณผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํ”ผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ..= ์—๋Š” ๋ฉ‹์ง„ ๋‹ˆ๋ชจ๋‹‰( up to ๋ฐ equal to )์ด ์žˆ์œผ๋ฏ€๋กœ ์ด ์—ฐ์‚ฐ์ž์— ๋Œ€ํ•œ ๋ฌธ์„œ๋ฅผ ์ž์ฃผ ๋ณผ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

... ์—ฐ์‚ฐ์ž๊ฐ€ ๊ทธ๋Œ€๋กœ ์œ ์ง€๋˜๊ณ  ๋Œ€์‹  .. ์—ฐ์‚ฐ์ž๋ฅผ ..โŽต , ์ฆ‰ ๋‘ ๊ฐœ์˜ ์ ๊ณผ ํ•˜๋‚˜์˜ ๊ณต๋ฐฑ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? ' ๋ฌธ์ž๊ฐ€ ์žˆ๋Š” ์ด์œ ๋Š” ์ด ์›นํŽ˜์ด์ง€์— ์ผ๋ฐ˜ ๊ณต๋ฐฑ์ด ํ‘œ์‹œ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๊ณต๋ฐฑ์ด ์ค‘์š”ํ•œ ์–ธ์–ด์—์„œ ํ•œ ๊ณณ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐ™์€ ๋ชจ๋“  ์ฝ”๋“œ ๋•Œ๋ฌธ์— ๊ทธ๊ฒƒ์€ ๋˜ํ•œ, ์ฃผ์š” ๋ณ€๊ฒฝ ๋  a..b ์•„๋‹ˆ๋ผ ๊ทธ๋Ÿฐ ์šด์˜์ž๊ฐ€ ์—†์Œ์„ ๋ถˆํ‰ ๊ฒƒ .. , ๊ทธ๋ฆฌ๊ณ  ์กฐ์–ธ๋Š” ์  ์ดํ›„์— ์ ์–ด๋„ ํ•˜๋‚˜ ๊ฐœ์˜ ๊ณต๊ฐ„์„ ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณต๊ฐ„์ด ์‹œ๊ฐ์ ์œผ๋กœ ์ถฉ๋ถ„ํžˆ ๊ตฌ๋ณ„๋˜๋„๋ก ๋งŒ๋“ ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

a.. b
a...b

@tommit ์†”์งํžˆ ์ข‹์€ ์ƒ๊ฐ์ด ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์—ฐ์‚ฐ์ž๋Š” ํ˜„์žฌ ๊ณต๋ฐฑ์— ๋Œ€ํ•ด ๋งค์šฐ ์œ ์—ฐํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด a..b ๋ฐ a .. b ๋Š” ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” a+b ๋ฐ a + b ์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ์—ฐ์‚ฐ์ž์™€ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ด๋“ค์€ ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ฉฐ ์‚ฌ๋žŒ๋“ค์ด ๋‹ค๋ฅธ ๊ตฌ๋ฌธ ์Šคํƒ€์ผ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜์—๊ฒŒ ๋ฌผ์–ด๋ณด๋ฉด ์ข‹์€ ์ผ์ด์•ผ!

์—ฌ๊ธฐ์— ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด ..= ํ‘œ๊ธฐ๋ฒ•์€ <= ๋ฐ >= ํ‘œ๊ธฐ๋ฒ•(_ํฌํ•จ_์œผ๋กœ ๊ฐ„์ฃผ๋จ)๊ณผ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์€ ํ•ญ์ƒ ์ข‹์ง€๋งŒ ์ด๊ฒƒ์€ ์•„๋งˆ๋„ ์˜ฌ๋ฐ”๋ฅธ ํ•ด๊ฒฐ์ฑ…์ด ์•„๋‹ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋™์˜ํ•˜๋‹ค. <= ๋ฐ >= <= ์™€ ๋น„๊ตํ•  ๋•Œ ..= ๋Š” ๊ทธ๋Ÿด๋“ฏํ•˜๊ณ  ๋…ผ๋ฆฌ์ ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ , ... ์˜ ํŒฌ์ด๊ฑฐ๋‚˜ ..= ๋ชจ์–‘์ด ๋งˆ์Œ์— ๋“ค์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ํƒ€ํ˜‘ ์†”๋ฃจ์…˜์€ ..= ๋Œ€ํ•œ ํŠน์ˆ˜ ํ•ฉ์ž๊ฐ€ ์žˆ๋Š” FiraCode ์™€ ๊ฐ™์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ•ฉ์ž์™€ ํ•จ๊ป˜ ์ผ๋ถ€ ๊ธ€๊ผด์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค ..= , ... ๋งคํ•‘๋˜๊ฑฐ๋‚˜ โฉท, โฉฆ ๋˜๋Š” โ‰”์™€ ๊ฐ™์€ ์ด์ƒํ•œ ๊ฒƒ๊นŒ์ง€ ๋งคํ•‘๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์–ด์จŒ๋“ , ์‹ค์ œ ๊ตฌ๋ฌธ์— ๋Œ€ํ•ด ๊ณ„์†ํ•ด์„œ ๋งŽ์€ ๋ฐ”์ดํฌ ์…ฐ์–ด๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ•ต์‹ฌ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ตœ์†Œํ•œ ๊ตฌ์กฐ์ฒด, ํŠน์„ฑ ๋ฐ impls๋ฅผ ์•ˆ์ •ํ™”ํ•˜๊ธฐ ์œ„ํ•ด #43086์„ ์ œ์ถœํ–ˆ์Šต๋‹ˆ๋‹ค(์ˆ˜์š”๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์œ„์˜ @retep998 ์ฃผ์„ ์ฐธ์กฐ).

๋ฐฉ์˜ ์ฝ”๋ผ๋ฆฌ๋Š” .. ๊ฐ€ ๋Œ€์นญ ๋ชจ์–‘์ด์ง€๋งŒ ๋น„๋Œ€์นญ ์˜๋ฏธ ๋•Œ๋ฌธ์— ์‹ค์ œ๋กœ ์—ฌ๊ธฐ์—์„œ ์ง„์งœ ๋ฌธ์ œ๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. "์˜ณ์€ ์ผ"์€ ์•„๋งˆ๋„ ๊ทธ๊ฒƒ์„ ๋น„์ถ”์ฒœํ•˜๋Š” ๊ฒƒ์„ ์ˆ˜๋ฐ˜ํ•  ๊ฒƒ์ด์ง€๋งŒ, ๋„ˆ๋ฌด ๋งŽ์€ ์ฝ”๋“œ์—์„œ ์ด๋ฏธ ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ ‡๊ฒŒ ํ•  ์˜์ง€๋Š” ์—†์Šต๋‹ˆ๋‹ค.

์™„๋ฒฝํ•˜๊ฒŒ ์ผ๊ด€๋œ ... (๋Œ€์นญ ๋ชจ์–‘, ๋Œ€์นญ ์˜๋ฏธ)๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์‰ฌ์šด ๋ฐฉ๋ฒ•์ด์ง€๋งŒ ..= ์— ๋˜ ๋‹ค๋ฅธ ์ผ๊ด€์„ฑ ์—†๋Š” ์—ฐ์‚ฐ์ž๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด์ „์˜ ์ž˜๋ชป๋œ ๋””์ž์ธ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋‚˜์œ ๋””์ž์ธ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

์ด ์ด์ค‘ ๋ถˆ์ผ์น˜ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์— ๋˜ ๋‹ค๋ฅธ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰ ๋‘ ๊ฐœ์˜ ํฌํ•จ ๋ณ€ํ˜•์„ ์ถ”๊ฐ€ํ•˜๋Š” ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค(์–‘์ชฝ์— ๋ฐฐํƒ€์ ์ด๋ฉฐ ์™ผ์ชฝ์—๋งŒ ๋ฐฐํƒ€์ ). .. ๋ฐ ..= ๋ชจ๋‘ ์™ผ์ชฝ์— ์ด๋ฏธ ์•”์‹œ์  = ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ์ด๋ฅผ ์–ด๋–ป๊ฒŒ๋“  ๋ฌดํšจํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•„๋งˆ๋„ < ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณด์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • <..= ๋Œ€ํ•œ (a; b]
  • <.. ๋Œ€ํ•œ (a; b)

์‹ ๊ทœ ์ด๋ฏผ์ž๋กœ์„œ ์ด๊ฒƒ์ด ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”์ง€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ถ”์ธกํ•˜๋Š” ํ–‰์šด์„ ๋น•๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ทธ๋“ค์€ ์•„๋งˆ๋„ (์ •๋‹นํ•˜๊ฒŒ) ๊ฒฐ์ฝ” ์ถ”๊ฐ€๋œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

.. ๊ฐ€ ํ™•๊ณ ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์กด์žฌํ•˜์ง€๋„ ์•Š๋Š”๋‹ค๋ฉด, ์ด ๋ชจ๋“  ๊ฒƒ์— ๋Œ€ํ•œ ์ผ๊ด€๋œ ๋””์ž์ธ์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ๊ทธ๋ ‡๊ฒŒ ์–ด๋ ต์ง€๋Š” ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • .. (๋˜๋Š” ... )์— ๋Œ€ํ•œ [a; b]
  • ..< ๋Œ€ํ•œ [a; b)
  • <.. ๋Œ€ํ•œ (a; b]
  • <..< ๋Œ€ํ•ด (a; b)

๋งˆ์ง€๋ง‰ ๋‘ ๊ฐ€์ง€ ๋ณ€ํ˜•์ด ์–ด๋Š ์‹œ์ ์—์„œ ์œ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋Š๋‚Œ์ด ๋“ญ๋‹ˆ๋‹ค. ์ •๋ง ๋นจ๋ฆฌ ๊ทธ ๊ฒฝ๋กœ๋ฅผ ์ฐจ๋‹จํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ์–ด๋–ค ๊ฒฝ์šฐ์—๋Š”, ์œ ์ผํ•œ ์ด์œ ๋Š” ์„ ํƒ ..= ๋น„ํ•˜ ์ด์ƒ .. ํ›จ์”ฌ ๋œ ์˜ˆ์ „์˜ ์ฝ”๋“œ๋ฅผ ๊นจ๋Š”๋˜์ง€๋งŒ ๊ธฐ๊ปํ•ด์•ผ ํ•„์š”์•…, ์ถ•ํ•˜ ์•„๋ฌด๊ฒƒ๋„ ํ•  ๊ฒƒ์ด๋‹ค.

_ํŽธ์ง‘: ๋” ๋ช…ํ™•ํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ์˜ˆ์ œ์™€ ๋ช‡ ๊ฐ€์ง€ ์„ค๋ช…์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค._

.. ... ๋˜๋Š” ..= ์•„๋‹ˆ๋ผ ์—ฌ๊ธฐ์„œ ์‹ค์ œ ๋ฌธ์ œ๋ผ๋Š” @rkarp์˜ ์˜๊ฒฌ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๋น„๋Œ€์นญ ์˜๋ฏธ๋Š” ๋‹ค๋ฅธ (์ธ๊ธฐ) ์–ธ์–ด๋Š” ์‚ฌ์‹ค์— ๋Œ€์นญ ์˜๋ฏธ๋ฅผ ํ• ๋‹น ํ•  ๊ฒƒ์„ ๊ณ ๋ คํ•˜๊ณ  ํŠนํžˆ ๋‚˜์˜๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Kotlin, Ruby ๋ฐ Haskell์€ ๋ชจ๋‘ 5๊ฐ€ 3..5 ๋ฒ”์œ„์— ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜ํ•™ ๋…ผ๋ฌธ๋„ ๊ทธ๊ฒƒ์„ ์„ ํ˜ธํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ตœ์•…์˜ ์ƒํ™ฉ์€ ์ดˆ๋ณด์ž๊ฐ€ Rust์—์„œ 3..5์˜ ๋™์ž‘์„ ์ถ”์ธกํ•  ๊ธฐํšŒ๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. 4์™€ 4๋งŒ ๋ฒ”์œ„ 3..5(์ ์— ๋Œ€ํ•œ ๋ฐ˜๋ณต)์˜ ๊ตฌ์„ฑ์›์ด๋ผ๊ณ  ๊ฒฐ์ •ํ•˜๊ฑฐ๋‚˜ ๋‘˜ ๋‹ค 3๊ณผ 5๋„ ๊ทธ ์•ˆ์— ์žˆ์Šต๋‹ˆ๋‹ค('์šฐ๋ฆฌ๊ฐ€ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๊ฒƒ'๊ณผ ์ ์˜ ์™ธ์‚ฝ์„ ๋ฐ˜๋ณตํ•จ).

๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ต๋‹ค๋Š” ์ ์—๋Š” ๋™์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. @adelarsq ์ œ์•ˆ์€ ๋น„๊ต์  ๊ณ ํ†ต ์—†์ด ๊ตฌํ˜„๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ฐธ๊ณ ๋กœ:

[1..4] // 1, 2, 3, 4
[1..4[ // 1, 2, 3
]1..4] // 2, 3, 4
]1..4[ // 2, 3

์˜ ๋ชจ๋“  ๋ฐœ์ƒ x..y (๋Œ€๊ด„ํ˜ธ์—†์ด์ด)๋กœ ๋ฒˆ์—ญ ๋  ์ˆ˜ [x..y[ ์™€ ์ปดํŒŒ์ผ๋Ÿฌ ๊ฒฝ๊ณ ๋ฅผ ๋ฐฉ์ถœํ•œ๋‹ค. ๋ช‡ ๊ฐ€์ง€ ๋ฆด๋ฆฌ์Šค ํ›„์— ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๋‹จ์ˆœํžˆ "๋ฒ ์–ด" ๋ฒ”์œ„ ํ‘œ๊ธฐ๋ฒ• ์ปดํŒŒ์ผ์„ ๊ฑฐ๋ถ€ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ƒˆ ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ์ž๋™ ๋ณ€ํ™˜ํ•˜๋Š” ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

https://github.com/rust-lang/rust/issues/28237#issuecomment -274216603 ์ด๋Š” ์ƒˆ๋กœ์šด ์•„์ด๋””์–ด๊ฐ€ ์•„๋‹ˆ๋ฉฐ ์ด๋ฏธ ์–ธ๊ธ‰ํ•œ ์ด์œ ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋’ค๋Šฆ๊ฒŒ ์•Œ๊ฒŒ ๋œ ์ด์ ์„ ๊ฐ€์ง€๊ณ  ์–ธ์–ด๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋””์ž์ธํ•œ๋‹ค๋ฉด ๋ฐฐํƒ€์  ๋ฒ”์œ„์™€ ํฌ๊ด„์  ๋ฒ”์œ„์˜ ๊ตฌ๋ฌธ์„ ํ•จ๊ป˜ ๊ณ ๋ คํ•˜๊ธฐ๋ฅผ ์›ํ•  ๊ฒƒ์ด๋ผ๋Š” ์ƒ๊ฐ์— ์ ˆ๋Œ€์ ์œผ๋กœ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ..= ๋Š” ํฌ๊ด„์ ์ธ ๋ฒ”์œ„์— ๋Œ€ํ•œ ์ด์ƒ์ ์ธ ์—ฐ์‚ฐ์ž๊ฐ€ ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋‹จ์ˆœํžˆ ํ˜„์žฌ ํ…Œ์ด๋ธ”์— ์žˆ๋Š” ์ตœ์„ ์˜ ์„ ํƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ˜„์žฌ์˜ ๋ฐฐํƒ€์  ๋ฒ”์œ„ ์—ฐ์‚ฐ์ž๋ฅผ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์€ ์ง€๋‚˜์น˜๊ฒŒ ๊ณ ํ†ต์Šค๋Ÿฝ๊ณ  ๊ธฐ์กด์˜ Rust ์‚ฌ์šฉ์ž์™€ ํ”„๋กœ์ ํŠธ์— ๋ถˆ์พŒ๊ฐ์„ ์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ž‘๋™ ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ์ˆ˜๋งŽ์€ ์ œ์•ˆ ..@ ์ œ์•ˆ๋œ ๊ฒƒ์„ ๋ณธ ์ ์ด ์—†์œผ๋ฉฐ x..@y ๊ฐ€ ์—ฐ์ƒ๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ํ˜„์žฌ ์ œ์•ˆ๋ณด๋‹ค ๋” ์„ค๋“๋ ฅ ์žˆ๋Š” ๊ฒƒ์„ ์ฐพ๋Š” ๋™์‹œ์— ๋ชจํ˜ธํ•จ์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋Œ€์นญ์— ๋Œ€ํ•œ ๋‚ด๊ฐ€ ๊ฐ€์žฅ ์ข‹์•„ํ•˜๋Š” ๊ด€์ ์œผ๋กœ 2๊ฐœ์›” ์ „ @ssokolow ์˜ ์˜๊ฒฌ ์„ ๊ฐ•์กฐํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.

  • ..4 ์—๋Š” < 4 ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ..=4 ์—๋Š” <= 4 ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํฌํ•จ ๋ฒ”์œ„๋งŒ ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋” ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.
ํ•ญ์ƒ + 1 ๋˜๋Š” -1์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ฒ”์œ„๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  .. ์ด ๋” ๋‚ซ์Šต๋‹ˆ๋‹ค. .. ๊ฐ€ ... ๋ณด๋‹ค ๊ฐ„๋‹จํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

@AlexanderChen1989 ์ด ์Šค๋ ˆ๋“œ์˜ ์—ฌ๋Ÿฌ ๊ฒŒ์‹œ๋ฌผ์—์„œ ์ด์ „์— ๋งํ–ˆ๋“ฏ์ด .. ์˜ ์˜๋ฏธ๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด ๊ธฐ์กด ์ฝ”๋“œ๊ฐ€ ์†์ƒ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๊ฒŒ๋‹ค๊ฐ€ ์‹ค์ œ๋กœ ๊ทธ๋ ‡๊ฒŒ ๊ฐ„๋‹จํ•˜์ง€๋„ ์•Š์Šต๋‹ˆ๋‹ค. ํŠนํžˆ +1 ๋ฐ -1 ๋Š” ์ •์ˆ˜ ์˜ค๋ฒ„ํ”Œ๋กœ/์–ธ๋”ํ”Œ๋กœ๋ฅผ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)

๋‹ค์Œ ์€ nightly (ํฌํ•จ ๋ฒ”์œ„ ๊ตฌ๋ฌธ์— ๋Œ€ํ•œ ์ด์ „ ํ›„๋ณด๋ฅผ ํ†ตํ•ด)์—์„œ

  • ...์–ด๋–ค ๋ฃจํ”„๋ฅผ ๋จผ์ € ๋„ฃ๋“  ๋””๋ฒ„๊ทธ ๋นŒ๋“œ์—์„œ ์˜ค๋ฒ„ํ”Œ๋กœ/์–ธ๋”ํ”Œ๋กœ ์‹œ ํŒจ๋‹‰์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • ...๋ฆด๋ฆฌ์Šค ๋นŒ๋“œ์—์„œ ์˜๋„ํ•œ ๊ฒƒ๊ณผ ์™„์ „ํžˆ ๋ฐ˜๋Œ€๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค(์ฆ‰, "0์—์„œ 0"์€ 256๋ฒˆ ๋ฐ˜๋ณต๋˜๊ณ  "0์—์„œ 255"๋Š” ์ „ํ˜€ ๋ฐ˜๋ณต๋˜์ง€ ์•Š์Œ)
#![feature(inclusive_range_syntax)]
fn main() {
    let max = 255u8;
    let user_provided = 0u8;

    for x in 0...user_provided-1 {
        println!("(0 to 0, exclusive via 'inclusive - 1'): {}", x);
    }

    for x in 0..max+1 {
        println!("(0 to 255, inclusive via 'exclusive + 1'): {}", x);
    }
}

์–ธ์–ด ํŒ€์ด ๊ฒฐ์ •์„ ๋‚ด๋ฆฐ ์ดํ›„๋กœ 8๊ฐœ์˜ Dead on arrival ๊ตฌ๋ฌธ ์ œ์•ˆ์ด ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ ์˜ค์‹  ๋ถ„๋“ค์€ ๊ธ€์„ ์ฝ์–ด์ฃผ์„ธ์š”. ์šฐ๋ฆฌ๊ฐ€ ์•ฝ์†ํ•œ ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๋Š” ๋ฐ์—๋Š” ์•„์ฃผ ์ข‹์€ ์ด์œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

IMHO OP๋Š” ์ด ์Šค๋ ˆ๋“œ์—์„œ ๋” ์ด์ƒ ๊ตฌ๋ฌธ ๋…ผ์˜๊ฐ€ ์—†์–ด์•ผ ํ•˜๋ฉฐ ๋ฐฐํƒ€์  ๋ฒ”์œ„ ๊ตฌ๋ฌธ(์˜ˆ: (a, b) ๋ฐ (a, b] ๋ฒ”์œ„)์— ๋Œ€ํ•œ ์ œ์•ˆ์€ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๋กœ ์ด๋™ํ•ด์•ผ ํ•จ์„ ์ง€์ ํ•˜๋„๋ก ์—…๋ฐ์ดํŠธ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ ๊ณ„ํš์„ ์•ˆ์ •ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ์ž‘์—…์— ๋Œ€ํ•ด์„œ๋งŒ ์ด์•ผ๊ธฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@clarcharr ๋‚˜๋Š” ๋Œ€๋ถ€๋ถ„ ์ผ๋ฐฉ์ ์ธ ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์„ OP์— ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ข‹์€ ์ƒ๊ฐ์ž…๋‹ˆ๋‹ค. ์†Œ์Œ์ด ๊ณ„์†๋˜๋ฉด ์Šค๋ ˆ๋“œ๋ฅผ ์ž ๊ทธ๋Š” ๋ฐ ํˆฌํ‘œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

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

@Badel2 ๋ฉ‹์ง€๋„ค์š” . ์‹ค์ œ๋กœ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ณง ๋‚ด ์ง€์ ์„ ํ‘ธ์‹œํ•˜๊ณ  ์—ฌ๊ธฐ์— ์—ฐ๊ฒฐํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@durka ๋ช…ํ™•ํžˆ @Badel2 ๊ฐ€ ๊ท€ํ•˜์˜ ์ง€์ ์—์„œ ์‹œ์ž‘ํ•˜๋„๋ก ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? impl ๊ธฐ๊ฐ„ ์ž‘์—…์˜ ์ผ๋ถ€๋กœ ๊ทธ๋“ค์„ ๋ฉ˜ํ† ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋“ค์€ Gitter ์ฑ„๋„์— ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋˜ํ•œ ์‹ค์ œ ๋ฌธ์ œ๊ฐ€ .. ์ด๋ผ๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. (์ด๊ฒƒ์€ ๊ธฐ์กด ์ฝ”๋“œ๋ฅผํ•˜์ง€ ๊นฐ __not__ ๊ฒƒ ํ•œ ๋ฒˆ์— ๊ต์ฒดํ•˜์ง€ ์•Š๋Š”, ๊ทธ๋ž˜์„œ) ๊ทธ๋ž˜์„œ, ๋” ์œ ๋ฆฌํ•œ ์†”๋ฃจ์…˜์„ ๋น„ํ•˜ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค .. ๊ฐ™์€ ์ฐฌ์„ฑ ..< ์‚ฌ์ด (๊ฐ€์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค ํ˜ผ๋ž€์„ a..<b ๋ฐ (a..)<b , .. ๋Š” ๊ฒฐ๊ตญ ์กด์žฌํ•˜์ง€ ์•Š๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

@hyst329 ์ด๋ฏธ

์ฒซ ๋ฒˆ์งธ ๊ฒŒ์‹œ๋ฌผ์€ ๊ตต์€ ๊ธ€์”จ์ฒด๋กœ "์ด ์Šค๋ ˆ๋“œ์—์„œ ๋” ์ด์ƒ ๊ตฌ๋ฌธ ๋…ผ์˜๊ฐ€ ์—†์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค."๋ผ๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ์ œ์ณ๋‘๊ณ , ๋‹น์‹ ์ด ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ์€ ๊ธฐ์กด ํ† ๋ก ์„ ์ฝ์ง€ ์•Š์€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์— ์˜ํ•ด ์ด๋ฏธ ์—ฌ๋Ÿฌ ๋ฒˆ ์ œ์•ˆ๋˜์—ˆ์œผ๋ฉฐ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์˜ต์…˜์ด ์•„๋‹Œ ์ด์œ ์— ๋Œ€ํ•œ ์‘๋‹ต์œผ๋กœ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ด์œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๊ฑด์„ค์ ์ด์ง€ ๋ชปํ•ด์„œ ์ฃ„์†กํ•˜์ง€๋งŒ ..= ๋ฅผ ๋ณด๊ณ  ๊ทธ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€ ๊ธฐ์–ตํ•˜๋ ค๊ณ  ํ•  ๋•Œ๋งˆ๋‹ค += ๋˜๋Š” <<= ์™€ ์œ ์‚ฌํ•œ ํ• ๋‹น ์—ฐ์‚ฐ์ž์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์ด ๋งค์šฐ ํ˜ผ๋ž€์Šค๋Ÿฝ๊ฒŒ ๋Š๊ปด์ง‘๋‹ˆ๋‹ค. (์˜ˆ๋ฅผ ๋“ค์–ด " ..= ๊ตฌ๋ฌธ์— ๋Œ€ํ•œ ์ดˆ๊ธฐ ์ง€์›" https://this-week-in-rust.org/blog/2017/10/03/this-week-์™€ ๊ฐ™์ด ์ปจํ…์ŠคํŠธ์—์„œ ๋ฒ—์–ด๋‚ฌ์Šต๋‹ˆ๋‹ค. ๋…น์Šฌ์ง€ ์•Š๋Š”-202/)

@SimonSapin ์œ„์—์„œ๋ณด๋‹ค ๊ฑด์„ค์ ์ธ ๋ฐฉ์‹์œผ๋กœ ๋™์ผํ•œ ๋น„ํŒ์„ ํ‘œํ˜„ํ–ˆ์œผ๋ฉฐ ๋Œ€์‹  ..^ ๋ฅผ ์ œ์•ˆํ–ˆ์Šต๋‹ˆ๋‹ค. https://github.com/rust-lang/rust/issues/28237#issuecomment -304325663

๋‚˜๋ฅผ ์œ„ํ•ด, ๋Œ€๋ณ€ ํ•˜๋‚˜์˜ ํฐ ํฌ์ธํŠธ ..= (๊ฐ€์ง€๊ณ ์žˆ๋Š” ์‹ ์†ํ•˜๊ณ  ์ผ๊ด€์„ฑ ์ •๋ ฌ์ž…๋‹ˆ๋‹ค ..< ๋…์  ๋ฐ .. ํฌ๊ด„์  ์ธ ๋ฒ”์œ„์— ๋Œ€ํ•œ ์ฐธ์กฐ). ์ด๊ฒƒ์€ ..= ์„ ํƒ์— ๋ฌธ์ œ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

@SimonSapin ๋‚˜๋Š” ๊ทธ๊ฒƒ์— ์™„์ „ํžˆ ๋งŒ์กฑํ•˜๋Š” ์‚ฌ๋žŒ์ด ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ๋ถˆํ–‰ํžˆ๋„ ๋” ๋‚˜์€ ๋Œ€์•ˆ์ด ์—†๋‹ค๋Š” ์ˆ˜๋ฐฑ ๊ฐœ์˜ ์˜๊ฒฌ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์•„๋ฌด๊ฒƒ๋„ ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ๋ณด๋‹ค ๋‚˜๋ฅผ ์„ค๋“ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ฌ์„ฑํ•œ ์ด ํŒจ์น˜ ๋Š” ํ˜„์žฌ์˜ ํŒจํ„ด ๊ตฌ๋ฌธ์„ ์—‰๋ง์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ๋ณด๋‹ค ์—์ง€ ์ผ€์ด์Šค๋งŒ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

.. ํŒจํ„ด์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ๊ฑฐ์˜ ์—†์œผ๋ฉฐ ํ•ญ์ƒ ๊ทธ๊ฒƒ ์—†์ด๋„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

... ๋Š” ์‹ค์ œ๋กœ ํ•„์š”ํ•œ ํ‘œํ˜„์‹์—์„œ RangeInclusive ๋˜๋Š” (Bound<T>, Bound<T>) ๋กœ ๋Œ€์ฒด๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋” ์žฅํ™ฉํ•˜์ง€๋งŒ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.

@UtherII

...๊ทธ๋ฆฌ๊ณ  ๋‚˜๋Š” ์ปดํŒŒ์ผ๋Ÿฌ์˜ "You can't use inclusive range syntax on stable" ๋ฉ”์‹œ์ง€์— ์˜ํ•ด ๋ฏธ๋ฌ˜ํ•œ ๋ฒ„๊ทธ๋กœ๋ถ€ํ„ฐ ๋‚ด๊ฐ€ ๊ตฌ์›๋ฐ›์•˜์„ ๋•Œ ... ๊ฐ€ ์œ ์ง€๋  ์ˆ˜ ์—†๋‹ค๊ณ  ํ™•์‹ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ ๋ฒˆ ์—ฐ์†์œผ๋กœ ๋น ๋ฅด๊ฒŒ ๋ˆ„๋ฅผ ๋•Œ ์‹ค์ˆ˜๋กœ . ๋„ˆ๋ฌด ๋งŽ์ด(๋˜๋Š” ๊ด€๋ จ๋œ ์—ญํ•™์„ ๊ฐ์•ˆํ•  ๋•Œ ํ•œ ๋ฒˆ ๋„ˆ๋ฌด ์ ๊ฒŒ) ๋ˆ„๋ฅด๋Š” ๊ฒƒ์€ ๋„ˆ๋ฌด ์‰ฝ์Šต๋‹ˆ๋‹ค.

" ..= ์„ ํŒจํ„ด์—์„œ ... ๋™์˜์–ด๋กœ ์ˆ˜๋ฝํ•˜๊ณ  ํ‘œํ˜„์‹์—์„œ ..= ๋ฅผ ์ˆ˜๋ฝํ•˜๋„๋ก ๋ณ€๊ฒฝ"์„ ์ฒดํฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ #44709 ์ดํ›„์˜ ๊ฒฝ์šฐ์ด๋ฏ€๋กœ dotdoteq_in_patterns ๋ฐ inclusive_range_syntax ๊ธฐ๋Šฅ. ๋‚จ์€ ๊ฒƒ์€ ๋ฌธ์„œํ™”์™€ ์•ˆ์ •ํ™”๋ฟ์ž…๋‹ˆ๋‹ค.

์•ˆ์ •ํ™” ์š”์ฒญ

ํฌํ•จ ๋ฒ”์œ„๋ฅผ 1.26 (3์›” 30์ผ ๋ฒ ํƒ€, 5์›” 11์ผ ์•ˆ์ •) ๋˜๋Š” ๊ทธ ์ด์ „์œผ๋กœ ์•ˆ์ •ํ™”ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์•ˆ์ •ํ™” PR์ด #47813์œผ๋กœ ์ œ์ถœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์š”์•ฝ

๋‹ค์Œ 3๊ฐ€์ง€ ๊ธฐ๋Šฅ์ด ์•ˆ์ •ํ™”๋ฉ๋‹ˆ๋‹ค.

  • inclusive_range_syntax โ€” ํ‘œํ˜„์‹์˜ a..=b ๋ฐ ..=b ๊ตฌ๋ฌธ:

    for i in 1..=10 {
        println!("{:?}", &a[..=i]);
    }
    
  • dotdoteq_in_patterns โ€” ํŒจํ„ด์˜ a..=b ๊ตฌ๋ฌธ:

    match c {
        b'0'..=b'9' => c - b'0',
        b'a'..=b'z' => c - b'a' + 10,
        b'A'..=b'Z' => c - b'A' + 10,
        _ => unreachable!(),
    }
    

    (์ฐธ๊ณ : a...b ๊ตฌ๋ฌธ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๊ฒฝ๊ณ  ์—†์ด ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค.)

  • inclusive_range โ€” std::ops::{RangeInclusive, RangeInclusiveTo} ์œ ํ˜• ๋ฐ ํ•ด๋‹น ํ•„๋“œ:

    let r = 1..=10;
    assert_eq!(r.start, 1);
    assert_eq!(r.end, 10);
    

์„ ์  ์„œ๋ฅ˜ ๋น„์น˜

@alercah ๊ฐ€ ์—ฌ๋Ÿฌ ๋ฌธ์„œ PR์„ ์ œ์ถœํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

ํ…Œ์ŠคํŠธ

๋‹ค์Œ์—์„œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • run-pass/range_inclusive.rs โ€”
    for-loop์—์„œ a..=b , ๋ฐ˜๋ณต์ž, ์Šฌ๋ผ์ด์Šค ์ธ๋ฑ์Šค, ..= ์—ฐ์‚ฐ์ž์˜ ์šฐ์„  ์ˆœ์œ„ ๋ฐ ์œ ํ˜• ๊ฒ€์‚ฌ ๋™์ž‘๊ณผ ๊ฐ™์€ ๊ธฐ๋ณธ ํ…Œ์ŠคํŠธ.
  • libcore/tests/iter.rs โ€”
    ๋ฐ˜๋ณต์ž๋กœ์„œ a..=b ์˜ ๋™์ž‘์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ํ…Œ์ŠคํŠธ; nth() , min() , max() ๋ฐ last() ์ „๋ฌธํ™”๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  (5..=5).next() ํ˜ธ์ถœํ•œ ํ›„ ๋ฒ”์œ„๊ฐ€ 1..=0 .
  • liballoc/tests/str.rs , liballoc/tests/btree/map.rs ๋ฐ liballoc/tests/vec.rs โ€”
    a..=b ๊ฐ€ ๋‹ค์–‘ํ•œ ์ปฌ๋ ‰์…˜ ์œ ํ˜•์—์„œ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • parse-fail/range_inclusive.rs ๋ฐ ui/impossible_range.rs โ€”
    a..= ๋ฐ ..= ์™€ ๊ฐ™์€ ๋„Œ์„ผ์Šค ๊ตฌ๋ฌธ์„ ์‹์œผ๋กœ ์ปดํŒŒ์ผํ•  ์ˆ˜ ์—†๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  • parse-fail/range_inclusive_dotdotdot.rs โ€”
    ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ํ‘œํ˜„์‹ ๊ตฌ๋ฌธ a...b ๋ฐ ...b ์„ ๊ฑฐ๋ถ€ํ•ฉ๋‹ˆ๋‹ค.
  • run-pass/inc-range-pat.rs โ€”
    ํŒจํ„ด์—์„œ a..=b ๋ฐ a...b ์ด ๋ชจ๋‘ ํ—ˆ์šฉ๋˜๊ณ  ๋™๋“ฑํ•จ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.
  • compile-fail/range_traits-1.rs ๋ฐ compile-fail/range_traits-6.rs โ€”
    RangeInclusive ๋ฐ RangeInclusiveTo ๋Š” ๋‹ค๋ฅธ ๋ฒ”์œ„์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ PartialOrd ๊ตฌํ˜„ํ•˜์ง€ ์•Š์œผ๋ฉฐ RangeInclusive ๋Š” Copy ๊ตฌํ˜„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ณต์ž์ด๊ธฐ ๋•Œ๋ฌธ์— Copy๋ฅผ ๊ตฌํ˜„ํ•˜์‹ญ์‹œ์˜ค).
  • libcore/tests/ops.rs โ€”
    ์ˆ˜๋™์œผ๋กœ ์ƒ์„ฑ๋œ RangeInclusive ์ธ์Šคํ„ด์Šค์˜ ๋ฐ˜๋ณต์ด ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ๋˜์ง€ ์•Š์€ ์งˆ๋ฌธ

  • for-loop์—์„œ a..=b ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด next() ๊ฐ€ ๋” ๋ณต์žกํ•˜๊ณ  ์ตœ์ ํ™” ํ”„๋กœ๊ทธ๋žจ์— ๋œ ์นœ์ˆ™ํ•˜๊ธฐ ๋•Œ๋ฌธ์— a..(b+1) ๋ณด๋‹ค ์„ฑ๋Šฅ์ด ํ›จ์”ฌ ๋‚ฎ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํ˜„์žฌ #45222์—์„œ ์ถ”์ ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํ˜„์žฌ for-loop ๋Œ€์‹  iterator ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ #48012์— ์˜ํ•ด ์™„ํ™”๋ฉ๋‹ˆ๋‹ค.

    ์•„์ง Rust-lang/rfcs#1980์˜ ๋””์ž์ธ์— ์ปค๋ฐ‹ํ•˜๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๋ฉด RangeInclusive ํ•„๋“œ๋ฅผ ๋ถˆ์•ˆ์ •ํ•˜๊ฒŒ ์œ ์ง€ํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค .

์•„์ง Rust-lang/rfcs#1980์˜ ๋””์ž์ธ์— ์ปค๋ฐ‹ํ•˜๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๋ฉด RangeInclusive ํ•„๋“œ๋ฅผ ๋ถˆ์•ˆ์ •ํ•˜๊ฒŒ ์œ ์ง€ํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

+1
์ผ๋ถ€ ๋ฉ”์„œ๋“œ ๊ธฐ๋ฐ˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•˜์ง€ ์•Š๊ณ  ์ง์ ‘ ๋ฒ”์œ„ ํ•„๋“œ๋ฅผ ๋…ธ์ถœํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

@rfcbot fcp ๋ณ‘ํ•ฉ

@kennytm ์˜ ์š”์•ฝ ์— ๋”ฐ๋ฅด๋ฉด ํฌํ•จ ๋ฒ”์œ„ ๊ตฌ๋ฌธ( ..= )์„ ์•ˆ์ •ํ™” ํ•  ๊ฒƒ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.

(์ฆ‰, ..= ์˜ ๋‚ฎ์€ ์„ฑ๋Šฅ์€ ์•ฝ๊ฐ„ ์šฐ๋ ค์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ..= ๋‹น๋ถ„๊ฐ„ Iterator ์— ์ง์ ‘ ๊ตฌํ˜„ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ํƒ€๋‹นํ•œ์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์™„ํ™”ํ•˜๊ธฐ ์œ„ํ•ด.)

ํŒ€์› @nikomatsakis ๊ฐ€ ์ด๋ฅผ ๋ณ‘ํ•ฉํ•  ๊ฒƒ์„ ์ œ์•ˆํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๋‹จ๊ณ„๋Š” ํƒœ๊ทธ๊ฐ€ ์ง€์ •๋œ ๋‚˜๋จธ์ง€ ํŒ€์ด ๊ฒ€ํ† ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • [x] @BurntSushi
  • [x] @ํ‚ค๋ฌธ๋””
  • [ ] @KodrAus
  • [x] @alexcrichton
  • [x] @์•„ํˆฌ๋ก 
  • [x] @cramertj
  • [x] @dtolnay
  • [x] @eddyb
  • [x] @nikomatsakis
  • [x] @nrc
  • [x] @pnkfelix
  • [x] @sfackler
  • [ ] @๋ณดํŠธ ์—†์ด

ํ˜„์žฌ ๋‚˜์—ด๋œ ์šฐ๋ ค ์‚ฌํ•ญ์ด ์—†์Šต๋‹ˆ๋‹ค.

๊ณผ๋ฐ˜์ˆ˜์˜ ๊ฒ€ํ† ์ž๊ฐ€ ์Šน์ธํ•˜๊ณ  ๋ฐ˜๋Œ€ํ•˜์ง€ ์•Š์œผ๋ฉด ์ตœ์ข… ์˜๊ฒฌ ์ œ์ถœ ๊ธฐ๊ฐ„์ด ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์„ธ์Šค์˜ ์–ด๋Š ์‹œ์ ์—์„œ๋„ ์ œ๊ธฐ๋˜์ง€ ์•Š์€ ์ฃผ์š” ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ•˜๋ฉด ์•Œ๋ ค์ฃผ์„ธ์š”!

ํƒœ๊ทธ๊ฐ€ ์ง€์ •๋œ ํŒ€ ๊ตฌ์„ฑ์›์ด ๋‚˜์—๊ฒŒ ์ค„ ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์— ๋Œ€ํ•œ ์ •๋ณด๋Š” ์ด ๋ฌธ์„œ ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์ด๋ฅผ ์™„ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋‹น๋ถ„๊ฐ„ Iterator๋ฅผ ..= ์ง์ ‘ ๊ตฌํ˜„ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ํƒ€๋‹นํ•œ์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์•ˆ์ •์ ์ธ ํŠน์„ฑ์€ ํ˜„์žฌ Nightly์—์„œ T ๋Œ€ํ•ด RangeInclusive<T> ๋Œ€ํ•ด ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค. Iterator , FusedIterator , ExactSizeIterator , Debug , Clone , Eq , PartialEq , Hash , TrustedLen .

@SimonSapin ๋‚˜๋Š” ์ด๋ฏธ ๊ตฌ์กฐ์ฒด๋ฅผ ์•ˆ์ •ํ™” ํ–ˆ์Šต๋‹ˆ๊นŒ? (์ฆ‰, ๊ด€์ฐฐ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๊นŒ?) ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๊ณ  ๊ฐ€์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋งํ–ˆ๋‹ค, ๋‚˜ ๋˜ํ•œ ์ •๋ง, ์ •๋ง ์ƒ๊ฐ 1..2 ๋ฐ 1..=2 ์—ฌ๊ธฐ ๋ณ€๊ฒฝํ•˜๊ธฐ์— ๋Œ€ํ•ด ์ฃผ์žฅํ•˜๊ณ , ๋Œ€์‹ ์— ์šฐ๋ฆฌ๊ฐ€ ์™„ํ™”๋ฅผ ์ถ”๊ตฌํ•˜๊ณ  ๊ฐœ์„  ๋งŒํ•œ๋‹ค ์ œ์•ˆ ๋ชจ๋‘ ๊ฐ™์€ ์žฅ์†Œ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ์ตœ์ ํ™”.

end == MAX ํŠน์ˆ˜ ์ผ€์ด์Šค ๋ฒ”์œ„๊ฐ€ ์•„๋‹Œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ด๋Š” ๊ฒฝ๊ณ„๋กœ ์ง์ ‘ ์ด๋™ํ•˜๋Š” ๋ฒ”์œ„์— ๋” ๋งŽ์€ ์ฝ”๋“œ๊ฐ€ ์žˆ๋‹ค๋Š” ์ ์„ ์ œ์™ธํ•˜๊ณ  ๋ฐฐํƒ€์  ๋ฒ”์œ„์™€ ๋™์ผํ•œ ์ฝ”๋“œ๋ฅผ ๊ฐ–๋Š” ๊ฐ€์žฅ ํฌ๊ด„์ ์ธ ๋ฒ”์œ„๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. end != Max ๋ถ„๊ธฐ๋Š” end ์ˆ˜์ •ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์˜ตํ‹ฐ๋งˆ์ด์ €์—์„œ ์‰ฝ๊ฒŒ ์ธ๋ผ์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@nikomatsakis ์•„๋‹ˆ์š”, ๊ตฌ์กฐ์ฒด๋Š” ํ˜„์žฌ ๋ถˆ์•ˆ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ @kennytm์˜ ์ œ์•ˆ์—๋Š” ์•ˆ์ •ํ™”๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

@SimonSapin

์•„๋‹ˆ์š”, ๊ตฌ์กฐ์ฒด๋Š” ํ˜„์žฌ ๋ถˆ์•ˆ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ @kennytm์˜ ์ œ์•ˆ์—๋Š” ์•ˆ์ •ํ™”๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

์•Œ ๊ฒ ์–ด์š”; ์‹ค์ œ๋กœ ์ด๊ฒƒ์ด ๋ฐ”๋กœ ์ง€๊ธˆ ์•„๋‹ˆ๋ฉด ์ ˆ๋Œ€ Iterator impl์„ ์ œ๊ฑฐํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์–ธ๊ธ‰ํ•œ ์ด์œ ์ž…๋‹ˆ๋‹ค. =)

@SimonSapin ๊ตฌ์กฐ์ฒด๋ฅผ ์•ˆ์ •ํ™”ํ•˜์ง€ ์•Š๊ณ ๋Š” a..=b ํ‘œํ˜„์‹ ๊ตฌ๋ฌธ์„ ์•ˆ์ •ํ™”ํ•  ์ˆ˜ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” ํ•„๋“œ๋ฅผ ๋ถˆ์•ˆ์ •ํ•˜๊ฒŒ ๋‘˜ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์šฐ๋ฆฌ๊ฐ€ ๊ทธ๊ฒƒ์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค๋ฉด.

๋งž์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ๊ฐ’์„ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌ๋ฌธ์„ ์•ˆ์ •ํ™”ํ•  ๋•Œ ์œ ํ˜•์„ ์•ˆ์ •ํ™”ํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

๋ฒ”์œ„ ๊ตฌ๋ฌธ์„ ํƒˆ์ถœํ•˜๊ณ  ์•ˆ์ •ํ™”๋ฅผ์œ„ํ•œ Huzzah! :๋”ฐ๋‹ค:

ํƒ€์ž„๋จธ์‹ ์ด ์ฃผ์–ด์ง€๋ฉด Range ์œ ํ˜•์ด :Iterator ๊ฐ€ ์•„๋‹ˆ๊ณ  :IntoIterator ๋ผ๊ณ  ์ฃผ์žฅํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ง€๊ธˆ ์€ Range์™€์˜ ์ผ๊ด€์„ฑ ์ด ์ตœ์„ ์˜ ์„ ํƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ๋ฅผ Chain ์™€ ํ•จ๊ป˜ "์Œ, ๋‚ด๋ถ€ ๋ฐ˜๋ณต์ด ๋•Œ๋•Œ๋กœ

ํ•ด๊ฒฐ๋˜์ง€ ์•Š์€ ๋˜ ๋‹ค๋ฅธ ๋ฌธ์ œ๋Š” ๋ฐ˜๋ณต๊ณผ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ณต์ด ์™„๋ฃŒ๋˜๋ฉด RangeInclusive์˜ ํŠน์ • ํ‘œํ˜„์„ ์ปค๋ฐ‹ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๊นŒ? ์ง€๊ธˆ ์€ 1..=0 ๋กœ ๋๋‚ฌ์ง€๋งŒ ๋‹ค๋ฅธ ์˜ต์…˜์— ๋Œ€ํ•ด ๋…ผ์˜ํ–ˆ์Šต๋‹ˆ๋‹ค . ๋ฌธ์„œ๊ฐ€ ์‚ฌ๋žŒ๋“ค์ด ๋ฌธ์„œ์— ์˜์กดํ•˜์ง€ ์•Š๋„๋ก ํ•˜๋Š” ๋ฐ ์ถฉ๋ถ„ํ•œ์ง€ ์—ฌ๋ถ€๋Š” ์•Œ ์ˆ˜ ์—†์ง€๋งŒ ํ˜„์žฌ ๋ฌธ์„œ๋Š” ์‚ฌํ›„ ๋ฐ˜๋ณต ๋ฒ”์œ„๋ฅผ ์ƒ๋‹นํžˆ ์“ธ๋ชจ์—†๊ฒŒ ๋งŒ๋“ค๊ณ  ์ ์–ด๋„ ๋‚™๋‹ดํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ฒฝ์šฐ๋ฅผ Chain๊ณผ ํ•จ๊ป˜ "์Œ, ๋‚ด๋ถ€ ๋ฐ˜๋ณต์ด ๋•Œ๋•Œ๋กœ ๋” ๋น ๋ฅธ ๊ฒƒ์œผ๋กœ ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค" ๋ฒ„ํ‚ท์— ๋„ฃ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋…์  ๋ฒ”์œ„๋ณด๋‹ค ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง€์ง€ ์•Š๋„๋ก ์ˆ˜์ •ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿด ๊ทผ๋ณธ์ ์ธ ์ด์œ ๋Š” ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿด _๊ทผ๋ณธ์ ์ธ_ ์ด์œ ๋Š” ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ์‹œํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ถˆ๋ณ€์„ฑ์— ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒํƒœ์˜ ์ถ”๊ฐ€ ๋น„ํŠธ๊ฐ€ ์žˆ๋Š” ์ด์ „ ๋‘ ๊ณต์‹์—์„œ๋Š” ๋ฐ˜๋ณต์„ ์™„๋ฃŒํ•  ๋•Œ ํ•ด๋‹น ๋น„ํŠธ๊ฐ€ ์‹ค์ œ๋กœ ์„ค์ •๋˜๋„๋ก ๊ฐ•์ œํ•˜๋Š” ๊ฒƒ์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค(์‚ฌ์‹ค 100..=0 ์™€ ๊ฐ™์€ ๋ฆฌํ„ฐ๋Ÿด์— ์„ค์ •๋˜์ง€ _์•Š์Šต๋‹ˆ๋‹ค_). ์ข…๋ฃŒ ์กฐ๊ฑด์€ ๋ณตํ•ฉ์ ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, LLVM์ด ๋” ์ด์ƒ ์ด๋ฅผ ํ•ด์ œํ•  ์˜์‚ฌ๊ฐ€ ์—†์œผ๋ฏ€๋กœ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋ฉ๋‹ˆ๋‹ค. ์™„์ „ํžˆ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์€ ๊ตฌ์กฐ์ฒด๋ฅผ ๋” ํฌ๊ฒŒ ๋งŒ๋“ค๊ณ  pub ํ•„๋“œ๊ฐ€ ์—†๋„๋ก ํ•˜๊ฑฐ๋‚˜ RangeInclusive: !Iterator ๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ๋ฃจํ”„๋ฅผ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐ LLVM์„ ๋” ์ž˜ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๊ฒŒ ๋‚ด๊ฐ€ ์“ฐ๋Š” ๋ช‡ ๊ฐ€์ง€ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ์‹œ๋„ํ–ˆ๋‹ค RangeInclusive::next , ๊ทธ๋ฆฌ๊ณ  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค ๋‚ด ๊ณผ๊ฑฐ ์ž๊ธฐ์˜ ์„ ํƒ์ด์— ์ผ์น˜ํ•˜๋„๋ก Option<Ordering> ๋งค์šฐ ์Šฌํ”ˆํ•˜๊ณ ์žˆ๋‹ค LLVM - ๋‹จ์ง€ ๋Œ€์‹ ์ด ๋น„๊ต ์—ฐ์‚ฐ์ž๋ฅผ ๋„ฃ์–ด์ฃผ๊ณ ์žˆ๋‹ค ํ›จ์”ฌ ๋” ๋‚˜์€ ์กฐ๋ฆฝ. PR ์ˆ˜์ • : https://github.com/rust-lang/rust/pull/48057

ํƒ€์ž„๋จธ์‹ ์ด ์ฃผ์–ด์ง€๋ฉด Range ์œ ํ˜• ์ค‘ ์–ด๋Š ๊ฒƒ๋„ :Iterator๊ฐ€ ์•„๋‹ˆ๊ณ  :IntoIterator์ผ ๋ฟ์ด๋ผ๊ณ  ์ฃผ์žฅํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ง€๊ธˆ์€ Range์™€์˜ ์ผ๊ด€์„ฑ์ด ์ตœ์„ ์˜ ์„ ํƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ๋ฅผ Chain๊ณผ ํ•จ๊ป˜ "์Œ, ๋‚ด๋ถ€ ๋ฐ˜๋ณต์ด ๋•Œ๋•Œ๋กœ ๋” ๋น ๋ฅธ ๊ฒƒ์œผ๋กœ ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค" ๋ฒ„ํ‚ท์— ๋„ฃ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด๊ฒƒ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

:bell: ์œ„ ์˜ ์ด์ œ ์ตœ์ข… ๋Œ“๊ธ€ ๊ธฐ๊ฐ„์— ์ ‘์–ด๋“ค์—ˆ์Šต๋‹ˆ๋‹ค . :๋ฒจ:

:bell: ์œ„ ์˜ ์ด์ œ ์ตœ์ข… ๋Œ“๊ธ€ ๊ธฐ๊ฐ„์— ์ ‘์–ด๋“ค์—ˆ์Šต๋‹ˆ๋‹ค . :๋ฒจ:

@rfcbot fcp ์ทจ์†Œ

@withoutboats ๋ฐ @KodrAus ๋Š” ํ•ด๋‹น ์ƒ์ž๋ฅผ ์„ ํƒํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

@cramertj ์ œ์•ˆ์ด ์ทจ์†Œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํŒ€์› @cramertj ๊ฐ€ ์ด๋ฅผ ๋ณ‘ํ•ฉํ•  ๊ฒƒ์„ ์ œ์•ˆํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๋‹จ๊ณ„๋Š” ํƒœ๊ทธ๊ฐ€ ์ง€์ •๋œ ๋‚˜๋จธ์ง€ ํŒ€์ด ๊ฒ€ํ† ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • [x] @alexcrichton
  • [x] @์•„ํˆฌ๋ก 
  • [x] @cramertj
  • [x] @dtolnay
  • [x] @eddyb
  • [x] @nikomatsakis
  • [x] @nrc
  • [x] @pnkfelix
  • [x] @sfackler
  • [ ] @๋ณดํŠธ ์—†์ด

ํ˜„์žฌ ๋‚˜์—ด๋œ ์šฐ๋ ค ์‚ฌํ•ญ์ด ์—†์Šต๋‹ˆ๋‹ค.

๊ณผ๋ฐ˜์ˆ˜์˜ ๊ฒ€ํ† ์ž๊ฐ€ ์Šน์ธํ•˜๊ณ  ๋ฐ˜๋Œ€ํ•˜์ง€ ์•Š์œผ๋ฉด ์ตœ์ข… ์˜๊ฒฌ ์ œ์ถœ ๊ธฐ๊ฐ„์ด ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์„ธ์Šค์˜ ์–ด๋Š ์‹œ์ ์—์„œ๋„ ์ œ๊ธฐ๋˜์ง€ ์•Š์€ ์ฃผ์š” ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ•˜๋ฉด ์•Œ๋ ค์ฃผ์„ธ์š”!

ํƒœ๊ทธ๊ฐ€ ์ง€์ •๋œ ํŒ€ ๊ตฌ์„ฑ์›์ด ๋‚˜์—๊ฒŒ ์ค„ ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์— ๋Œ€ํ•œ ์ •๋ณด๋Š” ์ด ๋ฌธ์„œ ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

:bell: ์œ„ ์˜ ์ด์ œ ์ตœ์ข… ๋Œ“๊ธ€ ๊ธฐ๊ฐ„์— ์ ‘์–ด๋“ค์—ˆ์Šต๋‹ˆ๋‹ค . :๋ฒจ:

@rfcbot fcp ๊ด€์‹ฌ์‚ฌ ๋ฒ”์œ„ ํŒจํ„ด์—๋Š” ์šด์˜์ž ์šฐ์„  ์ˆœ์œ„ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค( https://github.com/rust-lang/rust/issues/48501).

( @petrochenkov ๊ตฌ๋ฌธ์€ <strong i="6">@rfcbot</strong> concern KEYWORD ๊ฐ€ ์—†๋Š” fcp ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํƒœ๊ทธ๊ฐ€ ์ง€์ •๋œ ํŒ€์›๋งŒ์ด ์šฐ๋ ค ์‚ฌํ•ญ์„ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.)

์ด์ œ ์ตœ์ข… ์˜๊ฒฌ ์ˆ˜๋ ด ๊ธฐ๊ฐ„์ด ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

#48501์ด ์•ˆ์ •ํ™”๋ฅผ ์ฐจ๋‹จํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•˜๋‹ค๋ฉด #48500์ด ๋ณ‘ํ•ฉ(๋ฐ ์•ˆ์ •ํ™”)๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•ฉ๋‹ˆ๊นŒ? ๋” ๋น ๋ฅธ ๊ธธ์„ ์ฐพ์„ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ์ถœ์‹œ๋œ ์ง€ ๋„ˆ๋ฌด ์˜ค๋ž˜๋˜์–ด ํ˜„์žฌ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋ถˆ์•ˆ์ •ํ•œ ๊ตฌ๋ฌธ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ถˆ์•ˆ์ •ํ•œ ์ƒํƒœ์— ์žˆ์Šต๋‹ˆ๋‹ค.

@durka
์ด ์•ˆ์ •ํ™”๋ฅผ ์œ„ํ•ด https://github.com/rust-lang/rust/pull/48500 ์•ˆ์ •ํ™”๋ฅผ ๊ธฐ๋‹ค๋ฆด ํ•„์š”๊ฐ€ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค
... ํŒจํ„ด์ด ์—ฌ์ „ํžˆ ์กด์žฌํ•˜๊ณ  ์—ฌ์ „ํžˆ ์ด์ „ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์œ ์ง€ํ•˜๋ฏ€๋กœ ํŒจํ„ด์— &BEGIN ... END ์žˆ๋Š” ๊ฒฝ์šฐ(์ด๊ฒƒ์€ ๋งค์šฐ ๋“œ๋ฌธ ๊ฒฝ์šฐ์ž„) ํ•ญ์ƒ ..= ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š” ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ•œ๋™์•ˆ

#48500์„ ๊ฝค ๋นจ๋ฆฌ ์•ˆ์ •ํ™”์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ์ธ์ ์œผ๋กœ ๋‚˜๋Š” "insta-stable"๋กœ ๋žœ๋”ฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

inclusive range ๋Š” #47813 pull ์š”์ฒญ์ด ๋ณ‘ํ•ฉ๋˜์–ด ์•ˆ์ •ํ™”๋˜์—ˆ์ง€๋งŒ 1.25 ๋ฆด๋ฆฌ์Šค์—๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๊ฐ€ 3์›” 16์ผ ์— ๋ณ‘ํ•ฉ๋˜์—ˆ์ง€๋งŒ

@mominul ๊ธฐ๋Šฅ์€ ๋งˆ์Šคํ„ฐ ๋ธŒ๋žœ์น˜์— ๋ณ‘ํ•ฉ๋œ ํ›„์—๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ..= ๋Š” 1.25๊ฐ€ ์•„๋‹Œ 1.26๋ถ€ํ„ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ์‹์œผ๋กœ ๋ฒ ํƒ€์—์„œ ํ…Œ์ŠคํŠธํ•˜๊ณ  ์•ˆ์ •์ ์ธ ์ƒํƒœ๋กœ ํ‘ธ์‹œ๋˜๊ธฐ ์ „์— ์•ผ๊ฐ„์— ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@kennytm ๋ฐ @clarcharr ์ž…๋ ฅ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค! Rust 1.26 ๋ฆด๋ฆฌ์Šค๋Š” ํ™•์‹คํžˆ ์ ์–ด๋„ ์ €์—๊ฒŒ๋Š” ์ง€๋ฃจํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค! :์›ƒ๋‹ค:

์ด ํ† ๋ก ์— ์ฐธ์—ฌํ•˜๊ธฐ์—๋Š” ๋„ˆ๋ฌด ๋Šฆ์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ .. ๊ตฌ๋ฌธ์„ ์™„์ „ํžˆ ์ƒ๋žตํ•˜๊ณ  ๋Œ€์‹  ๋‹จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

Scala์—๋Š” 1 to 4 ๋ฅผ ์ƒ์„ฑํ•˜๋Š” [1, 2, 3, 4] , 1 until 4 ๋ฅผ ์ƒ์„ฑํ•˜๋Š” [1, 2, 3] ๋ฐ ๋‹จ๊ณ„ ํฌ๊ธฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์„ ํƒ์  by ํ‚ค์›Œ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. : 1 to 10 by 2 = [1, 3, 5, 7, 9] .

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์˜๋„๊ฐ€ ๋” ๋ช…ํ™•ํ•ด์ง€๊ณ  ๋ชจ๋“  ์‚ฌ๋žŒ์ด ๊ฑฑ์ •ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” "์˜คํ”„-๋ฐ”์ด-์›" ์˜ค๋ฅ˜๋ฅผ ํ”ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌผ๋ก  ์›๋ž˜ ๊ตฌ๋ฌธ์ด ๊ณ„์† ์ง€์›๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ๊ธฐ์กด ์ฝ”๋“œ๊ฐ€ ๋ชจ๋‘ ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค.

Rust ๋ฒ”์œ„์˜ to ๋ฐ until ๋ฅผ ํ‚ค์›Œ๋“œ๋กœ ๋„์ž…ํ•ด์•ผ ํ•˜๋ฉฐ ์ด๋Š” ํ›จ์”ฌ ๋” ํฐ ๋ณ€ํ™”๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Scala์—์„œ ์ž˜ ์ž‘๋™ํ•˜์ง€๋งŒ Rust์˜ ๋””์ž์ธ ์„ ํƒ์€ ํฌ๊ฒŒ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

@ElectricCoffee ๊ทธ ๋Š๋‚Œ์„

๋‚ด์žฅ ์–ธ์–ด ํ‚ค์›Œ๋“œ๋Š” ํ•จ์ˆ˜ ๋˜๋Š” ๋ณ€์ˆ˜ ์ด๋ฆ„๊ณผ ์ถฉ๋Œํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ตœ์†Œํ•œ์œผ๋กœ ์œ ์ง€ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

to ์™€ until ๋Š” std ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋‹จ์–ด๋Š” ์•„๋‹ˆ์ง€๋งŒ (๋‚ด๊ฐ€ ์•„๋Š” ํ•œ) ๋‹ค๋ฅธ ์ƒ์ž์™€ ํ”„๋กœ์ ํŠธ.

@daboross ๊ทธ๊ฑด ์‚ฌ์‹ค ๊ณ ๋ คํ•˜์ง€ ์•Š์€ ๊ณต์ •ํ•œ ์ง€์ ์ด์ง€๋งŒ a .. b ๋Š” a ๋ฐ b ๊ด€๊ณ„์—†์ด ์–ด๋–ค ์˜๋ฏธ์—์„œ a to b ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. b ์‹ค์ œ๋กœ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์˜ˆ, @timvisee ๋Š” ์•„๋งˆ๋„

@ElectricCoffee ํ•˜์ง€๋งŒ to ๊ฐ€ ..= ํ•˜๊ณ  until ๊ฐ€ .. ๋ฅผ ์˜๋ฏธํ•œ๋‹ค๋ฉด a to b ์•„๋‹ˆ๋ผ a until b ๋ฅผ ์จ์•ผ ํ•ฉ๋‹ˆ๋‹ค a to b a .. b a to b ๋Œ€์‹  a .. b . ๋ณด์‹œ๋‹ค์‹œํ”ผ, ์—ฐ์‚ฐ์ž๋ณด๋‹ค ์ด๋Ÿฌํ•œ ๋‹จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด "๋”" ์ง๊ด€์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ .. ๊ฐ€ ์‚ฌ์šฉ๋˜๋Š” ๋ชจ๋“  ๊ณณ์—์„œ until ๋ฅผ ์“ฐ๋Š” ๊ฒƒ์ด ๋” ์žฅํ™ฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ..= (๋‹จ์–ด๊ฐ€ ์‚ฌ์šฉ๋œ ๊ฒฝ์šฐ .. ์— ๋” ์งง์€ ๋‹จ์–ด๋ฅผ ํ• ๋‹นํ•ด์•ผ ํ•จ)

๊ทธ๋ฆฌ๊ณ  ๋‹น์‹ ์€ @Boscop ์— ๋Œ€ํ•ด ์ ˆ๋Œ€์ ์œผ๋กœ ์˜ณ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ๋‹จ์–ด๊ฐ€ ์–ด๋–ป๊ฒŒ ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ์˜ˆ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.

์ผ๋ถ€ ์–ธ์–ด์—์„œ๋Š” to ๋…์  ๋ฐ upto ํฌํ•จ๋„ ๋ณธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๊ทธ๊ฒƒ์€ ๋ชจ๋‘ ์•„์ด๋””์–ด๋กœ ์˜๋ฏธํ–ˆ์Šต๋‹ˆ๋‹ค.

์Šค์นผ๋ผ์—์„œ๋Š” ๋ฐฐํƒ€์  ๋ฒ”์œ„๋ณด๋‹ค ํฌ๊ด„์  ๋ฒ”์œ„๊ฐ€ ๋” ๋งŽ์ด ์‚ฌ์šฉ๋˜๋ฏ€๋กœ ๋” ์งง์€ ๋‹จ์–ด๊ฐ€ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.

@timvisee One์€ ๋‹จ์ˆœํžˆ a.to(b) ๋ฐ a.until(b) ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ถ”๊ฐ€ ํ‚ค์›Œ๋“œ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(๊ตฌ๋ฌธ์„ ํ›จ์”ฌ ๋” ์–ด์ƒ‰ํ•˜๊ฒŒ ๋งŒ๋“ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค).

@hyst329 ๊ทธ๊ฑด ์ƒ๊ฐ๋„ ๋ชป

์ด๊ฒƒ์ด ํ˜„์žฌ(/new) ๊ตฌ๋ฌธ์— ๋Œ€ํ•œ ์ ์ ˆํ•œ ์™„์ „ํ•œ ๋Œ€์ฒด๊ฐ€ ๋  ๊ฒƒ์ด๋ผ๊ณ ๋Š” ๋ฏฟ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ์ข‹์€ ์ถ”๊ฐ€ ์‚ฌํ•ญ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ง๊ด€์„ฑ์— ๋Œ€ํ•œ Boscop์˜ ์˜๊ฒฌ์— ๋™์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. "ํฌํ•จํ•˜๋Š”" ๋ฐ "์ œ์™ธํ•œ"๊ณผ ๊ฐ™์€ ๋‹จ์–ด๋ฅผ ์ œ์™ธํ•˜๊ณ , ์ผ์ƒ์ ์ธ ์˜์–ด๋Š” ๊ธฐ์„ฑํ’ˆ ์ง€๋ฆ„๊ธธ์ด ์žˆ์„ ๋งŒํผ ์ถฉ๋ถ„ํžˆ ํฌ๊ด„์ ์ธ ๋ฒ”์œ„์™€ ๋ฐฐํƒ€์ ์ธ ๋ฒ”์œ„๋ฅผ ์‹ค์ œ๋กœ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

"A to B"๋„ ์‚ฌ์šฉ๋˜๋Š” ๋งฅ๋ฝ์—์„œ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ํ•œ, "A to B"๊ฐ€ ์—ฌ๊ธฐ ์บ๋‚˜๋‹ค ์˜จํƒ€๋ฆฌ์˜ค์ฃผ ๋‚จ๋ถ€์—์„œ ์ผ์ƒ์ ์ธ ์—ฐ์„ค์—์„œ ํฌ๊ด„์ ์ธ ๋ฒ”์œ„๋ฅผ ์˜๋ฏธํ•˜๋Š”์ง€ ๋ฐฐํƒ€์ ์ธ ๋ฒ”์œ„๋ฅผ ์˜๋ฏธํ•˜๋Š”์ง€ ๋ชจํ˜ธํ•˜๋ฉฐ "until"์ด ์—ฐ๊ด€๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ๊ฐ•๋ ฅํ•˜์—ฌ ์ด ๋Š์Šจํ•œ ์˜๋ฏธ๋กœ ์‚ฌ์šฉ๋  ๋•Œ "until"์ด ์—ฐ๊ด€๋˜๋Š” "event"๊ฐ€ "X๋ฅผ ๋ณผ ๋•Œ๊นŒ์ง€"์ธ์ง€ "X๋ฅผ ์ฒ˜๋ฆฌ ํ•  ๋•Œ๊นŒ์ง€"์ธ์ง€ ์—ฌ๋ถ€๊ฐ€ ๋ถˆ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค.

@hyst329 ๋ฉ”์„œ๋“œ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ๋ฒ”์œ„๊ฐ€ ์ˆซ์ž ์œ ํ˜•์œผ๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค. ์ˆซ์ž ๋ฒ”์œ„์— ๋Œ€ํ•œ ๊ตฌ๋ฌธ๊ณผ ๋‹ค๋ฅธ ๋ฒ”์œ„์— ๋Œ€ํ•œ ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋ฒ”์œ„ ์ƒ์„ฑ์„ ์œ„ํ•œ ์„œ๊ณก์— ์ƒˆ๋กœ์šด ํฌ๊ด„์ ์ธ ํŠน์„ฑ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Š” ์‹ค์ œ to ๋ฐ until ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ๋Š” ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๊ฐ€๊น์Šต๋‹ˆ๋‹ค.

๊ณ ๋ฐฑํ•˜์ž๋ฉด ํ‚ค์›Œ๋“œ ์ œ์•ˆ์ด ๋งŒ์šฐ์ ˆ ์žฅ๋‚œ์ธ ์ค„ ์•Œ์•˜๋‹ค.
..= ๊ตฌ๋ฌธ์ด ์•ˆ์ •ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

2018๋…„ 4์›” 5์ผ ๋ชฉ์š”์ผ ์˜คํ›„ 1์‹œ 53๋ถ„์— David Ross [email protected]์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

@hyst329 https://github.com/hyst329 ๋ฉ”์†Œ๋“œ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ์ œํ•œ๋ฉ๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ๋ฒ”์œ„๋Š” ์ˆซ์ž ์œ ํ˜•์ž…๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
์ˆซ์ž์˜ ๋ฒ”์œ„์™€ ๋‹ค๋ฅธ ๊ฒƒ์˜ ๋ฒ”์œ„์— ๋Œ€ํ•œ ๋˜ ๋‹ค๋ฅธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋‹ค์Œ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์„œ๊ณก์— ์ƒˆ๋กœ์šด ํฌ๊ด„์ ์ธ ํŠน์„ฑ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
๋ฒ”์œ„, ํ•˜์ง€๋งŒ ๊ทธ๊ฒƒ์€ ์—ฌ์ „ํžˆ
์‹ค์ œ to ๋ฐ until ๋ฉ”์„œ๋“œ.

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/rust-lang/rust/issues/28237#issuecomment-379021814 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AAC3nwBj-b985q1Ez0OHDEHkG6DWV_5nks5tlloZgaJpZM4F4LbW
.

์˜ˆ, ์šฐ๋ฆฌ๋Š” ์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด 300๊ฐœ ์ด์ƒ์˜ ๋Œ“๊ธ€์„ ๋‹ฌ์•˜๊ณ  ์ฒซ ๋ฒˆ์งธ ๋Œ“๊ธ€ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

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

์ง€๊ธˆ์€ ์ด ๋ฌธ์ œ๋ฅผ ์ž ๊ทธ๊ฒ ์Šต๋‹ˆ๋‹ค. ํ˜น์‹œ๋ผ๋„ ๋ฐœ์„ ๋ฐŸ๊ณ  ์žˆ๋‹ค๋ฉด ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค!

์ด ๋ฌธ์ œ์—์„œ ๋‹ค๋ฃจ๋Š” ๋ชจ๋“  ๊ฒƒ์ด ์™„๋ฃŒ๋˜์—ˆ๋‹ค๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๋ฌธ์ œ์˜ ์›๋ž˜ ๋ฉ”์‹œ์ง€์— ์žˆ๋Š” ์ฒดํฌ๋ฆฌ์ŠคํŠธ๋ฅผ ๋‹ค์‹œ ์—ด๊ณ  ์—…๋ฐ์ดํŠธํ•˜์‹ญ์‹œ์˜ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰