Rust: "char": ์œ ๋‹ˆ์ฝ”๋“œ ๋ฌธ์ž ๋ฒ”์ฃผ์— ๋Œ€ํ•œ ์œ ํ˜• ๋ฐ ๊ธฐ๋Šฅ ์ถ”๊ฐ€

์— ๋งŒ๋“  2011๋…„ 12์›” 20์ผ  ยท  6์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: rust-lang/rust

์œ ๋‹ˆ์ฝ”๋“œ ๋ฌธ์ž ๋ฒ”์ฃผ๋Š” http://www.fileformat.info/info/unicode/category/index.htm ์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

Haskell์€ "GeneralCategory" ์œ ํ˜•๊ณผ ์บ๋ฆญํ„ฐ์˜ "GeneralCategory"๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
๊ตฌํ˜„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋น„์Šทํ•œ ์ผ์„ ํ•˜๋Š” Python ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•  ๊ฒƒ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.

Rust์— ๊ทธ๋Ÿฌํ•œ ์œ ํ˜•๊ณผ ํ•จ์ˆ˜๊ฐ€ ์žˆ์œผ๋ฉด "char" ๋ชจ๋“ˆ์—์„œ ํ•จ์ˆ˜๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. http://haskell.org/ghc/docs/6.12.2/html/libraries/base-4.2.0.1/src/Data-Char.html ์ฐธ์กฐ

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

๋„ˆ๋ฌด ์˜ค๋ž˜๋œ ์Šค๋ ˆ๋“œ์— ๋Œ“๊ธ€์„ ๋‹ฌ์•„ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ UCD(v9.0.0)์˜ ๋งŽ์€ ๋ถ€๋ถ„์„ ์—ฌ๊ธฐ์—์„œ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. libicu๋‚˜ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์˜์กดํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฌ์›Œ์•ผ ํ•ฉ๋‹ˆ๋‹ค(ICU๋งŒํผ ์‹ ๋ขฐํ•  ์ˆ˜๋Š” ์—†์ง€๋งŒ).

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

libstd์—์„œ 'unicode::'๋ผ๊ณ  ํ•˜๋Š” ์ง„ํ–‰ ์ค‘์ธ ๋ชจ๋“ˆ์€ libicu์— ๋Œ€ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์Šค์ผ€์น˜ํ•˜๋ ค๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค. ๊ฒฐ์ •์€ ์‹ค์ œ๋กœ ๋Œ€๋ถ€๋ถ„์˜ ์บ๋ฆญํ„ฐ ํด๋ž˜์Šค์— ๋Œ€ํ•ด ๊ทธ๋ฆฌ ๊ฐ„๋‹จํ•˜์ง€ ์•Š์œผ๋ฉฐ ICU๋Š” ์ด๋ฅผ ์ž˜ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์‚ฌ๋žŒ์ด libicu์— ๋Œ€ํ•œ ์ข…์†์„ฑ์„ ์ฑ„ํƒํ•˜๋Š” ๋ฐ ์ฟจํ•˜๋‹ค๋ฉด core::char ์•„๋ž˜์— ๋…ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

libicu๋Š” ์›ํ•˜๋Š” ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ๋งŽ์ด ์ œ๊ณตํ•˜๋ฉฐ ๋Œ€๋ถ€๋ถ„์˜ ์ปดํ“จํ„ฐ์— ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค(Python์—์„œ๋Š” ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์šฐ๋ฆฌ์—๊ฒŒ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค).

๊ณต๊ฐœ libicu ๋ฐ”์ธ๋”ฉ์„ ์ œ๊ณตํ•˜๊ฑฐ๋‚˜ "char", "str" โ€‹โ€‹๋“ฑ๊ณผ ๊ฐ™์€ ๋ชจ๋“ˆ์—์„œ ๋‚ด๋ถ€์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?
์ €๋Š” ํ›„์ž์— ์น˜์šฐ์น˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

libicu๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Rust์˜ "char"์— ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌํ˜„ํ•˜๋ ค๋ฉด "u_isspace()", "u_isdigit()", "u_forDigit()"(http://icu-project.org/ apiref/icu4c/uchar_8h.html).

์šฐ๋ฆฌ๋Š” ์•„์ง ์™„์ „ํ•œ libicu-bindings(๋งŽ์€ ์ƒ์ˆ˜ ์ •์˜๋ฅผ ํฌํ•จํ•˜์—ฌ)๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋ฆฌ๋น„์ฟ ์˜ ๊ธธ์„ ๊ฐ€์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. #1370 ์ฐธ์กฐ

์ด๊ฒƒ์„ ๋‹ค์‹œ ์—ด ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๋Š” ๋” ์ด์ƒ libicu์— ์˜์กดํ•˜์ง€ ์•Š์ง€๋งŒ ์บ๋ฆญํ„ฐ์˜ ๋ฒ”์ฃผ๋ฅผ ์ฐพ๋Š” ์‰ฌ์šด ๋ฐฉ๋ฒ•์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์—†์Šต๋‹ˆ๋‹ค.

๋„ˆ๋ฌด ์˜ค๋ž˜๋œ ์Šค๋ ˆ๋“œ์— ๋Œ“๊ธ€์„ ๋‹ฌ์•„ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ UCD(v9.0.0)์˜ ๋งŽ์€ ๋ถ€๋ถ„์„ ์—ฌ๊ธฐ์—์„œ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. libicu๋‚˜ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์˜์กดํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฌ์›Œ์•ผ ํ•ฉ๋‹ˆ๋‹ค(ICU๋งŒํผ ์‹ ๋ขฐํ•  ์ˆ˜๋Š” ์—†์ง€๋งŒ).

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰