ํค์๋ ์ธ์์ ๋ํ ๋ฌธ์ ๋ ์์์ต๋๋ค. ์์ผ๋ก ์ด์ ๋ํ ๊ณํ์ด ์์ต๋๊น?
์ฐธ๊ณ : ๋ฒ๊ทธ ์ถ์ ๊ธฐ๋ ์ค๊ณ ํ ๋ก ์ ํ๋ ๊ณณ์ด ์๋๋๋ค. ๋ชจ๋ ๋์์ธ ํ ๋ก ์ etherpad( https://pad.riseup.net/p/hvbg6dQQnEe7 )๋ก ๋ณด๋ด๊ฑฐ๋ Wiki์ bikeshedding ํ์ด์ง๋ฅผ ๋ง๋์ญ์์ค.
์ด๋๋ท ํจ๋:
์ด์ ๋ํ ๊ณํ์ ์์์ง๋ง ์์ง ์๋ฌด๋ ๋ฐ๋์ ๋ชฉ์๋ฆฌ๋ฅผ ๋ด์ง ์์์ต๋๋ค. ์ ๋ ์ด ๋ฌธ์ ์ ๋ํด ์ค๋ซ๋์ ์๊ฐํด ์์ผ๋ฉฐ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ธฐ๋ณธ ์ธ์์ ๋ํ ์์ฒญ์ผ๋ก ์์ฝ๋ฉ๋๋ค. ๋๋ ๊ทธ๊ฒ์ด ๋ค์๊ณผ ๊ฐ์ด ๋ณด์ผ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
fn foo(bar: int, qux=2: int, ham=0: uint) { ... }
๊ทธ๋ฌ๋ฉด foo(1)
, foo(1, 3)
, foo(1, ham=4)
, foo(6, 7, 8)
๋ฑ์ผ๋ก ํธ์ถ๋ ์ ์์ต๋๋ค.
ํธ์ง: ์๋์์ huonw๊ฐ ์ ์ํ ๊ตฌ๋ฌธ์ ์ฐธ์กฐํ์ธ์. ํ์ฌ ์ ์ธ ๊ตฌ๋ฌธ์์ ํจ์ฌ ๋ ์ข๊ณ ๊ท ์ผํด ๋ณด์ ๋๋ค.
Triage 2013-08-05: ์ง์ ์ด ์์(๋ด๊ฐ ์๊ณ ์์), ์ฌ์ ํ ๊น๋ํ์ง๋ง; ์๋ง๋ ์ ์ธ ๊ตฌ๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ ์ ์์ต๋๋ค.
fn foo(bar: int, qux: int = 4, ham: Option<int> = None) { ... }
์ฌ๊ธฐ์ RHS๋ ์์ expr์
๋๋ค(์ฆ, static
์ ์ธ์์ ์ ํจํ ๊ฒ).
IMO ์ด๊ฒ๋ค์ ์ ๋ง ์ ์ฉํฉ๋๋ค. ์ง์ ๋์ง ์์ ํํ ์ธ์์ ๋ํด์๋ง ๊ธฐ๋ณธ๊ฐ์ผ๋ก ํด๋ฐฑํ ์ ์๋ _default arguments_์ C++ ์์คํ
๋ ํ๋ฅญํ ๊ฒ์
๋๋ค... ์ค๋ฒ๋ก๋ฉ๋งํผ ๋ณต์กํ์ง ์์ผ๋ฉด์ ๋์ฒด ๋ช
๋ช
๋ ํจ์ ๋ณํ์ ์๋ฅผ ์ค์
๋๋ค. ๊ตฌ์กฐ์ฒด ๋ฐ ์ด๊ฑฐํ ๋ณํ์์๋ ์ ์ธํ ์ ์๋ค๋ฉด ์ข์ ๊ฒ์
๋๋ค.
๋ช
๋ช
๋ ํค์๋ ๋งค๊ฐ๋ณ์๋ฅผ ํธ์ถํ๋ ๋ฐฉ๋ฒ/๊ฒฝ์ฐ์ ๋ํ ํฉ์๊ฐ ์๊ธฐ ์ ์ ํ์ํ ๋์์ ์ด ๊ฐ๋จํ ํ์ ์งํฉ์ ๊ตฌํํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ๋ด๋ถ๊ฐ ์ค๋น๋ ๊น์?
์ด์ ์ ์ง์ ๋ ์ธ์ ๋ฐ ์ผ๋ฐ ์ ํ ๋งค๊ฐ๋ณ์(์: 0์ ์กฐํํ๋ ๊ธฐ๋ฅ::
C++ ์คํ์ผ ๊ธฐ๋ณธ๊ฐ์ ํ์ค์ผ๊ณผ ๊ฐ์ ๋ถ๋ถ ๊ธฐ๋ฅ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ฐฐ์ ํ์ง๋ง ๋ค์ด๊ฐ ๊ฐ๋ฅ์ฑ์ด ์๋ค๊ณ ๋ค์์ต๋๊น?
๊ธฐ๋ณธ ์ธ์์ ๋ํ ๋ ๋ค๋ฅธ ์์ด๋์ด๊ฐ ์์ต๋๋ค. ์ธ์๋ฅผ ์์ ํ ์๋ตํ๋ ๋์ ๊ธฐ๋ณธ๊ฐ์ด ์๋ ์ธ์๋ฅผ _
๋ก ํธ์ถํ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ @huonw ์ ๋ฉ์ง ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
fn foo(bar: int, qux: int = 4, ham: Option<int> = None) { ... }
... ์ด๊ฒ์ foo(1, 2, None)
, foo(1, _, Some(1))
, foo(1, _, _)
๋ฑ์ผ๋ก ํธ์ถํ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ด ์์ด๋์ด๋ ์ฌ์ ํ ์๋ฐํ ์์น์ ์๋ค๋ ์ ์ ๊ฐ์ํ ๋ ํค์๋ ์ธ์๋ฅผ ์ฑํํ๋ ๋ฐ ์๋ฌด๋ฐ ์ด์ ์ ์ ๊ณตํ์ง ์์ต๋๋ค.
์ ๋ชฉ์ "๊ธฐ๋ณธ ์ธ์ ๋ฐ ํค์๋ ์ธ์"๋ก ๋ณ๊ฒฝํฉ๋๋ค.
๊ตฌํ๋์ง ์์์ง๋ง ast ๋ฐ ํ์์ ์ถ๊ฐํ๋ ค๊ณ ์๋ํ์ต๋๋ค. https://github.com/dobkeratops/rust/compare/default_args , ์ด๊ฒ์ด ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์
๋๊น? (์ต์
@expr .. expr์ด ๋ฌด์์ธ์ง์ ๋ํ ์ ์ฝ ์กฐ๊ฑด์ด ํ์ํฉ๋๊น? )
์ด ๊ธฐ๋ฅ์ ์คํํ๊ธฐ ์ํด ๋ฌผ์ ๋ฐ๊ฐ๋ฝ์ ๋ด๊ทธ๊ณ ์์ต๋๋ค.
๋ฒ์ญํ ์ ์๋ C++ API์ ํ์ ์งํฉ์ ๋๋ฆฌ๊ธฐ ์ํด ์ด๊ฒ์ ์ด๋งํ๊ณ ์์ผ๋ฉฐ, C++์์ ํ์คํ ๊ทธ๋ฆฌ์ํ๋ ๋ถ๋ถ์ด๋ฉฐ ๋ช
๋ช
๋ ํค์๋ ๊ธฐ๋ฅ์ C++์์ ์ํํ๋ ๊ฒ ์ด์์ผ๋ก ๊ต์ฅํ ๊ฒ์
๋๋ค.
๋ ๋ฒ์งธ๋ก ์ ์๋ ์ ์ธ ๊ตฌ๋ฌธ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฐ๋จํ๊ณ ๋
ผ๋ฆฌ์ ์ผ๋ก ๋ณด์์ต๋๋ค.
@dobkeratops ๋ ์ข์ ๋ณด์
๋๋ค( type Default = Option<@expr>
๋ ์๋ง๋ ๋ถํ์ํ์ง๋ง).
์์ ์ ์ฝ expr
๊ฐ rustc::middle::check_const
; ๊ฐ ์ธ์๋ฅผ ํ์ธํ๋ check_fn
์ ๊ฐ์ ํจ์๋ฅผ ์ถ๊ฐํด์ผ ํฉ๋๋ค. (๋ํ ๊ธฐ๋ณธ args๊ฐ ๋์๋ง ํ์๋๋์ง ํ์ธํด์ผ ํ๋ฉฐ ์ ํ ๊ฒ์ฌ๊ธฐ rustc::middle::typeck
๋ฐ trans
์๋ ๋ฌด์ธ๊ฐ๊ฐ ์์ด์ผ ํ ๊ฒ ๊ฐ์ต๋๋ค. )
Ok ํ๋์ ์ด๋ฆ์ด ํ์ํ์ง ์์ ์ฃผ์์ด ๋๋๋ก ์ง์ ๋์์ต๋๋ค.
์ด๋๋ฅผ ๋ด์ผ ํ๋์ง ์๋ ค์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค. ๋๋ rustc::middle::typeck::.. mod.rs (check_fn something )์์ ์ฐพ๊ณ ์์์ต๋๋ค.
'์ง์์ ํตํฉ'์ด๋ผ๋ ์ด๋ฆ์ผ๋ก ์ฌ์ํ ๊ธฐ์ด ์์
์ ํ๋ณด๋ก ์ ์ถํ๋ ๊ฒ์ด ๊ฐ์น๊ฐ ์์ต๋๊น? ๋ง์ฝ ๋ด๊ฐ ์ด๊ฒ์ ๋ํด ์๋ฉด ์ฝ๋๋ฒ ์ด์ค๋ฅผ ๋ ์ ์๋ ์ฌ๋์ด ๋ค๋ฅธ ๋ถ๋ถ์ ํจ์ฌ ๋ ๋นจ๋ฆฌ ํ ์ โโ์์ ๊ฒ์
๋๋ค.
๋๋ ํญ์ ๋ณํํ๋ ๋ณํ์ ๋ํด ํธ์ง์ฆ์ ์
๋๋ค.
๋น์ ์ด ํ์คํ _๋ฐ๋_ ๊ฒฐ์ ํ๋ค๋ฉด ๊ทธ๊ฒ์ ์ ์ผํ ํ๊ดด์ ์ ๋๊น?
๋๊ตฐ๊ฐ๋ ์ด๋ฐ ์ข ๋ฅ์ ๊ฒ์ด -Z ์ต์ (..Session::debug_optsโฆ
์ปดํ์ผ๋ฌ๊ฐ ์์ง ์ฌ์ฉํ์ง ์๋ ๊ฒ์ ๊ตฌ๋ฌธ ๋ถ์ํ๋ ๊ฒ์ ๋ฐ๋ํ ์ ์๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค. ๊ฒฝ๊ณ ์์ ์ค๋ฅ๋ก ๋ณ๊ฒฝํ ์ ์์ต๋๋ค...
@dobkeratops ์์ง ๊ณต์ ๊ฐ๋ฐ์๊ฐ ์ด์ ๋ํด ์ธ๊ธํ์ง ์์์ผ๋ฏ๋ก PR์ด ๋ฐ์๋ค์ฌ์ง ๊ฐ๋ฅ์ฑ์ ๊ฑฐ์ ์์ต๋๋ค. ์ฌ๊ธฐ์์ 1) ๊ธฐ๋ณธ ์ธ์๋ฅผ ์ํ๋์ง ์ฌ๋ถ, 2) ๊ทธ๋ ๋ค๋ฉด, ๊ตฌ๋ฌธ์ ์ด๋ ํด์ผ ํ๋์ง, 3) ํค์๋ ์ธ์๋ฅผ ์ํ๋์ง ์ฌ๋ถ(๊ธฐ๋ณธ ์ธ์์ ๋ํด ์ ํํ ์๋ฏธ ์ฒด๊ณ๊ฐ ์ด๋ฅผ ๋ฐฐ์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ).
์ข์, ๋๋ ๊ทธ๋ค์ด ์๋ฌด ๊ฒ๋ ์ฐจ๋จํ์ง ์๊ธฐ ๋๋ฌธ์ ์ค๋ซ๋์ ์์ง ์ฐ์ ์์๊ฐ ๋งค์ฐ ๋ฎ์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ค.
๊ทธ๊ฒ์ ๋ฎ์ ๋งค๋ฌ๋ฆฐ ๊ณผ์ผ, ๊ทธ๋ฆฌ๊ณ C++ ์ฌ๋๋ค์ ์ํ ๋ ๋ค๋ฅธ ์น์ํจ์ผ ์ ์๋ค๊ณ ์๊ฐํ์ต๋๋ค.
๋๋ ๋งคํฌ๋ก๊ฐ ๋๋๋ก ๋น์ทํ ์ผ์ ํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ช ๋ช ๋ ์ธ์๊ฐ ์ค์ํ์ง ์๋ค๋ ๊ฒ์ ์ ์ ์์ง๋ง IMO ์ ํ์ ์ธ์๋ ์ค์ํฉ๋๋ค. ์ด๋ค ๊ณณ์์๋ ์ฃผ์ด์ง arg๊ฐ ํ์ํ์ง ์์ ๋ ๋ ์ฌ์ด ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ๋น์ทํ ์๋ช ๊ณผ ๋น์ทํ ์ด๋ฆ์ ๊ฐ์ง ๋ช ๊ฐ์ง ๋ฉ์๋๋ฅผ ๋ณธ ๊ฒ ๊ฐ์์. ๊ธฐ๋ฅ์ด ์๋ค๋ ์ด์ ๋ง์ผ๋ก ๊ทธ๋ฐ ๋ ๊ฑฐ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ฒ ๋๋ค๋ฉด ์ ๋ง ์ง์ฆ๋ ๊ฒ์ ๋๋ค.
์ฌ๊ธฐ์ ๋ฏธ๋ฌํ ๋ถ๋ถ์ด ๋ง์ด ์์ต๋๋ค. ๊ธฐ๋ณธ ์ธ์๋ ๋ชจ๋ ์ค๋ฒ๋ก๋ฉ์ ์์์ ํํ์ด๋ฏ๋ก (๋ด ์ถ์ธก์ผ๋ก๋) ํน์ฑ ๋ถ์ ์๊ณ ๋ฆฌ์ฆ ๋ฐ/๋๋ ์ ํ ์ถ๋ก ๊ณผ ํตํฉ๋ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. ๊ทธ๋ค์ง ์ด๋ ต์ง ์์ ์๋ ์์ง๋ง ์ ์คํ๊ฒ ์ค๊ณํ ๊ฐ์น๊ฐ ์์ผ๋ฉฐ ํ์ฌ๋ก์๋ ์ด๋ฅผ ์ํ ์๊ฐ ์์ฐ์ด ์๋์ง ํ์ ํ ์ ์์ต๋๋ค. _์ธ์ด_ ๊ธฐ๋ฅ์ผ๋ก์ ๋๋ ๊ทธ๊ฒ์ด ์ด์ ๋ฒ์ ๊ณผ ํธํ๋๋ค๊ณ ์์ํฉ๋๋ค. API ๊ธฐ๋ฅ์ผ๋ก API ์ค๊ณ์ ์ผ๋ถ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ฏ๋ก BC ์ํ์ ๋ํ๋ ๋๋ค.
@Seldaek ๊ธฐ๋ณธ ์ธ์๋ฅผ ์ํ๋ฉด stdlib ์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ์ ์ปค๋ฐํ๊ธฐ ์ ์ ์ด๋ฅผ ๊ตฌํํ๋ ๊ฒ์ด ์ค์ํ๋ค๋ ๋ฐ ๋์ํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋๋ ์ฝ๊ฐ ๋ค๋ฅธ ์ด๋ฆ๊ณผ ์๋ช ์ ๊ฐ์ง ํจ์ ์ ๊ทผ ๋ฐฉ์์ ์ฐฌ์ฑํ์ฌ ๊ธฐ๋ณธ ์ธ์๋ฅผ ์ฒ ํ์ ์ผ๋ก ๊ฑฐ๋ถํ๋ ์ ์ด๋ ํ๋์ ์ธ์ด(Go)๋ฅผ ์๊ณ ์์ต๋๋ค.
๊ทธ๋ฌ๋ Rust์ ๋ฌ๋ฆฌ Go์๋ ๊ธฐ๋ณธ ์ธ์์ ๋ถ์ฌ๋ฅผ ๋ ๊ณ ํต์ค๋ฝ๊ฒ ๋ง๋๋ ๋ช ๊ฐ์ง ๊ธฐ๋ฅ์ด ์์ต๋๋ค. ํ๋๋ ๊ฐ๋ณ ํจ์๊ฐ ์์ต๋๋ค.[1] ๋์งธ, ๊ตฌ์กฐ์ฒด๋ฅผ ์์ฑํ ๋ ํ๋๋ฅผ ์๋ตํ ์ ์์ต๋๋ค. ์ฆ, ๊ตฌ์ฑ ๊ตฌ์กฐ์ฒด๋ฅผ ํจ์์ ์ฝ๊ฒ ์ ๋ฌํ ์ ์์ต๋๋ค(์๋ต๋ ํ๋๋ ์ฌ์ฉ์๊ฐ ํ ์ ์๋ ๊ฒ์ด ์๋๋ผ ์ปดํ์ผ๋ฌ ์ง์ (?) ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ค์ ๋๋ ๊ฒ์ผ๋ก ๋ํ๋ฉ๋๋ค. ์ฌ์ฉ์ ์ ์).[2]
์ ์์ ๊ฒฝ์ฐ ๋งคํฌ๋ก ํด์ปค๋ฅผ ์ฌ์ฉํ์ฌ ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์ต๋๋ค(๋น๋ก ๊ตฌํ ๋น์ฉ์ด ๋ง์ด ๋ค์ง๋ง). ์ค์ ๋ก fmt!()
๋ํ ํฅํ ๊ต์ฒด๋ ๋ค์์ ์ํํฉ๋๋ค.
ifmt!("{foo} {1} {bar} {0}", 0, 1, foo=2, bar=3)
์ด๊ฒ์ ์ค๋๋ ์๋ํ๋ ์ฝ๋์ ๋๋ค.
ํ์์ ๊ฒฝ์ฐ ์ฐ๋ฆฌ๊ฐ ๊ฐ์ง ๊ฐ์ฅ ์ข์ ์ ์ฌ์ ์ ๋ค์๊ณผ ๊ฐ์ด ๊ธฐ๋ฅ์ ๊ตฌ์กฐ์ฒด ์ ๋ฐ์ดํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค.
struct Foo { x: int, y: int, z: int }
impl Foo {
fn default() -> Foo {
Foo{x: 0, y: 0, z: 0}
}
}
fn bar(f: Foo) {
printf!(f);
}
fn main() {
bar(Foo{y: 5, ..Foo::default()});
}
๋๋ ์ด ๋ฐฉ๋ฒ์ด ๊ณผ๊ฑฐ์ ๊ธฐ๋ณธ ์ธ์ ๋ถ์กฑ์ ๋ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก ๋ฌด์ฌ์ฝ ์ ์๋ ๊ฒ์ ๋ณด์์ง๋ง ์ค์ ๋ก๋ ๊ฝค ๋ณด๊ธฐ ํํฉ๋๋ค( bar(Foo{y: 5, ..Foo::default()})
์ bar(y=5)
๋๋ bar(_, 5, _)
), ๋ฌผ๋ก ๋ชจ๋ ์ธ์๋ฅผ ์ ๋ฌํ๋ ค๋ _do_ ๊ฒฝ์ฐ์๋ ๋ชจ๋ ํธ์ถ์๊ฐ ๊ตฌ์กฐ์ฒด๋ฅผ ์์ฑํ๋๋ก ๊ฐ์ ํฉ๋๋ค.
๋ค์ ๋งํ์ง๋ง, ์ ๋ Python๊ณผ Javascript์์ ์จ ์ฌ๋์ผ๋ก์ ๊ธฐ๋ณธ ์ธ์๋ฅผ ๋ถ๋ช ํ ํ์ํฉ๋๋ค. ๊ทธ๋ฌ๋ API๋ฅผ ๋ช ์์ ์ผ๋ก ๋ง๋๋ Go์ ์ฒ ํ์ ์ด๋ ์ ๋ ๊ณต๊ฐํฉ๋๋ค(API ์์ฒด์ ๊ธฐ๋ฅ ์๋ฅผ (์ ์ฌ์ ์ผ๋ก ํฌ๊ฒ) ๋ถํ๋ฆฌ๋ ๋๊ฐ๋ก).
[1] https://groups.google.com/d/msg/golang-nuts/NWMReL1HueQ/X9mdYduCOB8J
[2] http://stackoverflow.com/questions/2032149/optional-parameters
๋ํ ํด๋ก์ ์ ์ํธ ์์ฉํ๊ณ ํจ์์ ๋ํ ์ผ๊ธ ์ฐธ์กฐ๋ฅผ ์ฌ์ฉํ๋ค๋ ์ ์ ์ง์ ํด์ผ ํฉ๋๋ค.
@bstrie Go ๊ฐ์์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ์ค๋ฒ๋ก๋ฉ์ ํผ๋์ค๋ฌ์ด API๋ฅผ ์์ฑํ๊ธฐ ๋๋ฌธ์ ์๋ง๋ ๋์ ์๊ฐ์ผ ์ ์๋ค๋ ์ ์ ๋์ํฉ๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก ์ํ๋ ๊ฑฐ์ ๋ชจ๋ ์ธ์์์ ์ฝ๋ฐฑ์ ๋ฐ์ ์ ์๋ jQuery์ "๊ณผ๋ถํ๋" ๋ฉ์๋๋ ๊ตฌํํ๊ธฐ๊ฐ ๋งค์ฐ ์ด์ํ๊ณ ๊ณ ํต์ค๋ฝ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๋ค ๊ฒฝ์ฐ์๋ ๊ธฐ๋ณธ ์ธ์๋ฅผ ์ฑ์ฐ๋ ๋ํผ ํจ์๊ฐ ๊ทธ๋ ๊ฒ ๋์์ง ์๋ค๋ ๋ฐ ๋์ํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ฌธ์ ๋ ์ผ๋ถ ํผ๋์ค๋ฌ์ด ๊ฒฝ์ฐ๋ฅผ ๋ฐฉ์งํ๋ ๋ฐ๋ฉด ๋ค๋ฅธ ๊ฒฝ์ฐ์๋ ๋ง์ ์์ฉ๊ตฌ๋ฅผ ๋์
ํ๋ค๋ ๊ฒ์
๋๋ค. ํ ๊ฐ์ง ์๋ *::to_str_radix(num, radix)
์
๋๋ค. ์ ํ์ ์ธ์๊ฐ ์๋ ๊ฒฝ์ฐ *::to_str(num, radix = 10)
๋ก ์ ์ ์ ์์ต๋๋ค. ์ด๋ค ๊ฒฝ์ฐ์๋ ํจ์ ๋ณํ์ ํญ๋ฐ๋ก ์ธํด ์ง๊ด์ ์ด์ง ์๊ณ ๊ธฐ์ตํ๊ธฐ๊ฐ ๋ ์ด๋ ค์์ง๋๋ค. ๋ถ๋ช
ํ ๋ด 2 ์ผํธ.
๋๋ ๊ทธ๊ฒ๋ค์ ์ฐ๊ธฐํ๊ธฐ์ ์ข์ ํ์ด๋ฐ์ ๋ณผ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ฒ ํ์ ์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ _์ ๋ง__ ์๋ตํฉ๋๊น, ์๋๋ฉด ๊ตฌํ ์๊ฐ๊ณผ ์์ฐ ์ ์ถฉ์์ ์ ๋นํํ๋ ๊ฒ๋ฟ์
๋๊น? ๋๊ตฐ๊ฐ๊ฐ long_function_names_with_lots_of_trailing_qualifiers๋ฅผ ํ ๋จ๊ณ ๋ ๋์๊ฐ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ค๋ฉด ๋๋์ ๊ฒ์
๋๋ค. :) ํ์ง๋ง ๊ทธ๋ค์ด "๊ฐ๋จํ ๋๊ตฌ๋ฅผ ํ์ฉํ ์ ์๊ฒ ํด์ฃผ์ง๋ง ์์ง ๊ฐ๋ ฅํ IDE๋ฅผ ๊ฐ๋ฐํ์ง ๋ชปํ์ต๋๋ค.."๋ผ๊ณ ๋งํ๋ฉด ๋ ๋ค๋ฅธ ๋ฌธ์ ์
๋๋ค.
๋๋ ํ์คํ C++์ ์ค๋ฒ๋ก๋ฉ๊ณผ ๊ธฐ๋ณธ๊ฐ์ ๋ชจ๋ ๊ทธ๋ฆฌ์ํฉ๋๋ค. ๊ทธ๋ฌ๋ Rusts์ ๋ค๋ฅธ ํธ๋ฆฌํจ๊ณผ C++ ๋์์ ์ฝ์(์ค๋ซ๋์ 1๊ฐ์ ์ฃผ์ ์ธ์ด์ ๋งค๋ฌ๋ฆฐ ํ..)
์คํ์ ์ํด 'ํ์ ํดํน'์ผ๋ก ์ํํ๋ ค๊ณ ์๊ฐํ์ต๋๋ค... ๋งคํฌ๋ก ์์ค์์ ์์
ํฉ๋๊น? ์ธ์๊ฐ ๋๋ฝ ๋ ํธ์ถ ์ฌ์ดํธ์์ ๊ธฐ๋ณธ expr์ ์ธ๋ผ์ธ ํ์๊ฒ ์ต๋๊น?
๋๋ ๊ทธ๊ฒ์ด ๋ฐ์๋ค์ผ ์ ์๋ ๋์์ธ์ผ ๊ฒ ๊ฐ์ง ์๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค - ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ๋
น์ค์ ๊ธฐ๋ฅ๊ณผ ํจ๊ป ์๋ํ๋ ๊ธฐ๋ณธ ์ธ์๋ฅผ ๊ฐ๋ ๊ฒ์ด _๋ถ๊ฐ๋ฅ_ํ์ง ์๋ค๊ณ ๋ฏฟ๊ฒ ๋ง๋ญ๋๋ค.
๋ด๊ฐ ์ฌ์ ํ ์ ๋ง๋ก ์ต์ํด์ง๊ณ ์๋ ํ ๊ฐ์ง๋ ๋ฐฉ๋ฒ์ด ์ด๋ก ์ ๋
น์์ ํจ์ฌ ๋ ์ ์ฉํ๋ค๋ ๊ฒ์
๋๋ค.
C++๋ก ๋์๊ฐ์ ๋๋ ํค๋/์ข
์์ฑ ๋ฌธ์ ๋๋ฌธ์ ๊ทธ๊ฒ๋ค์ ๋๋ ค์ํฉ๋๋ค(์ด๊ฒ์ด ๋ด๊ฐ ์ฌ๊ธฐ ์๋ ์ฃผ๋ ์ด์ ์
๋๋ค). ๊ทธ๋์ ์ ๋ ์ข
์ข
๋ณธ๋ฅ์ ์ผ๋ก ํจ์๋ฅผ ๋จผ์ ์ฐพ์ต๋๋ค.
์๋ง๋ Rust๋ฅผ ๋ ์ ์ฌ์ฉํ๋ฉด ๊ธฐ๋ณธ๊ฐ์ ๋ ๊ทธ๋ฆฌ์ ํ ๊ฒ์
๋๋ค.
์์ด๋์ด๊ฐ ์ฌ๋ผ์ง์ง ์๋๋ก: bar(Foo{y: 5, ..Foo::default()})
์ ์๋ค์ค๋ฌ์ด ์ธก๋ฉด์ ์ ๊ฐ ๋ณด๊ธฐ์ ..Foo::default()
๋ถ๋ถ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
๊ตฌ์กฐ์ฒด ์์ฑ์์ ํ๋๋ฅผ ์๋ตํ๋ ๊ฒ์ ๋ ์ฝ๊ฒ ๋ง๋ค๊ณ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ๋จ์ด๋จ๋ฆฌ๋ฉด ์ด ์ ๊ทผ ๋ฐฉ์์ด ๋ ์ ๋ง์ ๋ง์ ๊ฒ์ ๋๋ค.
์๋ฅผ ๋ค์ด ์ด๋ค ์ ์ ํ ํน์ฑ( Zero
๋๋ Default
)์ ๊ตฌํํ๋ ๊ตฌ์กฐ์ ๋ํด์๋ง ์ ์๋ ์ ํ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Foo{y: 5, *)
์ฌ๊ธฐ์ *
๋ ์ด์ ..Foo::default()
ํฉ๋๋ค.
๊ทธ๋ฐ ๋ค์ ์์ ๋ "๋จ์ง" bar(Foo{y: 5, *})
์
๋๋ค. ๋ค๋ฅธ ์ฌ๋๋ค์ Foo
๋ ๊ฑฐ๊ธฐ์ ์๋ ๊ฒ์ ์ ํธํ ์๋ ์์ง๋ง ์ด๊ฒ์ ๋์๊ฒ ๊ฝค ๊นจ๋ํด ๋ณด์
๋๋ค.
์ด๊ฑฐํ์ ๋ํ C++ ํ๋ก๊ทธ๋๋จธ๊ฐ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๋ค๋ฅด๊ฒ ์ ํ์ ๋งค๊ฐ๋ณ์ ๊ทธ๋ฃน์ ํธ๋ฆฌํ๊ฒ ์ ๋ฌํ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ๊ณผ ์ฃผ์ ๋ฐ ๊ฐ์ ํธ์ถ๋ก ์ฐ์ฌํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
์ค์ ๋งค๊ฐ ๋ณ์๊ฐ ๋ง์ ๊ฒ์ ๋ง๋๋ ๊ฒ๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ ์ ๋ง๋ ๊ฒ ๊ฐ์ต๋๋ค.
@pnkfelix ํด๋น ์์ ์ Foo
๊ตฌ์กฐ์ฒด๋ ์๋ง๋ ํจ์ฌ ๋ ์์ฒด ์ค๋ช
์ ์ธ ์ด๋ฆ์ ๊ฐ์ง ๊ฒ์ด๋ฉฐ ์ ์ํ ์คํ์ ์ฌ์ฉํ๋๋ผ๋ ์ค์ ๋ก๋ ๋ค์๊ณผ ๊ฐ์ด ๋ณด์ผ ๊ฒ์
๋๋ค.
html::start_server(html::ServerOpts{port: 10088, *});
์กฐ๊ธ ๋ ๋ฉ์ ธ ๋ณด์ ๋๋ค. ์ ๊ตฌ๋ฌธ์ ๋ณด์ฆํ๊ธฐ์ ์ถฉ๋ถํ์ง ๋๋ ๊ธฐ๋ณธ ์ธ์์ ๋ชจ๋ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ถฉ์กฑํ๊ธฐ์ ์ถฉ๋ถํ์ง ์ฌ์ ํ ํ์คํ์ง ์์ต๋๋ค.
์ฌ์ค, ๋ด ์์ ์ ์๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด HTML ์๋ฒ์ ๊ฐ์ ๋ง์ ์ต์
์ ์ฌ์ฉํ์ฌ ๋ฌด์ธ๊ฐ๋ฅผ ์ด๊ธฐํํ ๋ ๋ฏธ๋ฆฌ server_opts
๊ตฌ์กฐ์ฒด๋ฅผ ์ค์ ํ ๋ค์ start_server(server_opts)
ํธ์ถํ๋ ๊ฒ๋งํผ ํ๋ณตํ ๊ฒ์
๋๋ค ..html::ServerOpts::default
ํ ์ค์ ์ถ๊ฐํด๋ ์๊ด ์์ต๋๋ค.
๊ธฐ๋ณธ ์ธ์๊ฐ ๊ฐ์ฅ ์ ์ฉํ ์์น๋ฅผ ๋ค์ ์๊ฐํด์ผ ํ ์๋ ์์ต๋๋ค. ์ ๊ฒ๋ ๋ง์ ์ ์ฌ์ ์ธ ๋ ผ์์ด ์๋ ๊ณณ์ด ์๋๋๋ค. ์ด๊ฒ์ ์๋นํ ๋๋ฌผ๊ณ ๊ตฌ์ฑ ๊ตฌ์กฐ์ฒด๋ฅผ ์ด๊ธฐํํ๋ ๋ช ์ค์ด๋ฉด ์ถฉ๋ถํฉ๋๋ค. ์คํ๋ ค 1) ์์ ์ด ์๋นํ ์ผ๋ฐ์ ์ด๊ณ 2) ์์ ์ ๊ฑฐ์ ํญ์ ๋ถํ์ํ์ง๋ง ์์ ์ฑ์ ์ํด ํ์ํ ํ๋ ๋๋ ๋ ๊ฐ์ ์ธ์๊ฐ ์์ ์ ์์ ๋ ๊ธฐ๋ณธ ์ธ์๋ฅผ ๊ฐ์ฅ ๊ทธ๋ฆฌ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด:
let foo = Some('a');
foo.unwrap(); // same as today
foo.unwrap('z'); // imagine that this replaced unwrap_or_default
int::from_str("4"); // same as today
int::from_str("4", 16); // imagine that this replaced from_str_radix
๊ทธ๋ฌ๋ ์ด์ ์ด๋ฌํ ํญ๋ชฉ์ ์ ๋ ฅํ๊ณ ๋๋ฉด ์ค์ ๋ก๋ ๋ณ๋์ ๋ฉ์๋๊ฐ ๋ช ์์ ์ผ๋ก ํ์๋๋ ๊ฒ์ ์ ํธํฉ๋๋ค. :) ์ด์ฉ๋ฉด ๋๋ ๊ฒฐ๊ตญ ๋ด๊ฐ ๋ฌด์์ ์ํ๋์ง ์ ๋ง๋ก ๋ชจ๋ฅผ ์๋ ์์ต๋๋ค!
@dobkeratops , C++์ ๋ํ ๊ฒฝํ์์ ๊ธฐ๋ณธ ์ธ์๋ก ํ์ฑํ๋๋ ๋ฉ์ง C++ API์ ๋ช ๊ฐ์ง ์๋ฅผ ์ ๊ณตํ ์ ์์ต๋๊น?
https://github.com/mozilla/rust/wiki/Meeting-weekly-2013-08-13์ ๋๊ธ์ ๊ฐ๋ฐ์๊ฐ ์ด๊ฒ์ ๋จผ ๋ฏธ๋์ ๊ธฐ๋ฅ์ผ๋ก ๋ณด๊ณ ์์์ ๋ํ๋ด๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ง๋ช .
OCaml์ ์ค๋ฒ๋ก๋ฉ ์์ด ์ ํ์ /๊ธฐ๋ณธ ์ธ์๋ฅผ ์ํํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ด ์๋ T ์ ํ์ ์ ํ์ ์ธ์๋ ์์์ ์ผ๋ก T ์ต์ ์ผ๋ก ๋ณํ๋๋ฉฐ ํจ์๋ ๊ฐ์ด ์ ๊ณต๋์๋์ง ํ์ธํด์ผ ํฉ๋๋ค. ๋ํ ์ธ์๊ฐ ์๋ต๋ ๊ฒฝ์ฐ ์ปดํ์ผ๋ฌ๊ฐ ์ ์ ์๋๋ก ์ ํ์ ์ธ์์ ์ ์ธ ๋ฐ ์ฌ์ฉ์ ๋ํ ์ ํ์ด ์์ต๋๋ค. ๋ชจ๋ ์ ํ์ ์ธ์์๋ ๋ ์ด๋ธ์ด ์์ด์ผ ํฉ๋๋ค(์ ํ ์ฌํญ์ด ๋๋ ค๋ฉด ํค์๋ ์ธ์์ฌ์ผ ํจ). ์ด๊ฒ์ OCaml์ ์ ํ ์์คํ ์ ๋ณต์กํ๊ฒ ๋ง๋ค์ง๋ง(๋ ์ด๋ธ์ ํจ์ ์ ํ์ ์ผ๋ถ๊ฐ ๋จ) ์ด๊ฒ์ Hindley-Milner ์ ํ ์์คํ ์ ๋๋จธ์ง ๋ถ๋ถ๊ณผ ์ํธ ์ด์ฉํด์ผ ํ๋ ๊ฒฐ๊ณผ๋ผ๊ณ ์๊ฐํฉ๋๋ค.
C++์์ ์ค๋ฉด ๊ธฐ๋ณธ ์ธ์ ๊ฐ์ด ์ ๋ง ๊ทธ๋ฆฌ์ธ ๊ฒ์ ๋๋ค. ๋๋ ์ข ์ข ๋ง์ ์์ ๋งค๊ฐ๋ณ์๊ฐ ์๋ ํจ์๋ฅผ ์ฌ์ฉํ๋๋ฐ, ๋๋ฌผ๊ฒ ์ฌ์ฉํ๊ฑฐ๋ ํ ์คํธ ์ฌ๋ก๋ฅผ ์ ์ธํ๊ณ ๋๋ถ๋ถ์ ๊ฑฐ์ ํญ์ ๊ธฐ๋ณธ๊ฐ์ ์ฌ์ฉํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ ๋์ ์์ ํ ์กฐํฉ ํจ์ ์ด๋ฆ ํ์๋ฌผ์ ์ถ๊ฐํ๋ฉด ์ ๋ง ๊ธด ์ด๋ฆ์ด ์๋ง์ด ๋ฉ๋๋ค.
๊ธฐ๋ณธ ์ธ์ ๋ฐ/๋๋ ํค์๋ ์ธ์๊ฐ ๋งค์ฐ ์ ์ฉํ ๊ฒ์ด๋ผ๋ ๋ฐ ๋์ํฉ๋๋ค. ์ค๋ฒ๋ก๋ฉ๊ณผ ๊ด๋ จํ์ฌ ์ํํด์ผ ํ๋ ์์ ์ ์ค๋ช ํ๊ณ ๊ตฌ๋ฌธ์ ๋ํด ๋ ผ์ํด์ผ ํ๋ 1.0 ์ด์ ์ ์์ ์ํด ์์ ํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ ๋ง์ ์ฌ๋๋ค์ด ์ฐฌ์ฑํ๋ ๋๊ธ์ ๋ณด๋ ๋ฐ๊ฐ์ต๋๋ค :) ๋ด๊ฐ ์ํ๋ ๋ ๋ค๋ฅธ ์ด์ ๋ ์ํํ๊ฒ ๋ฒ์ญ๋ ์ ์๋ C++ API์ ์์ ๋๋ฆฌ๋ ๊ฒ์ด์์ต๋๋ค. C++ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ฐ๋ฆฌ๊ฐ C++์ ์ง์ฐฉํ๋ ํฐ ์ด์ ์ค ํ๋์ ๋๋ค.
์ปค๋ฎค๋ํฐ๊ฐ ํต์ฌ ๊ฐ๋ฐ์์๊ฒ ๋น์ฉ์ ๋ค์ด์ง ์๊ณ _๊ตฌํํ ์ ์๋ค๋ฉด ์ฐ๋ฆฌ๊ฐ ์ด๊ฒ์ ์ป์ ์ ์๋ ์ ์ผํ ๋ฐฉ๋ฒ์ด ์๋๊น ์๊ฐํฉ๋๋ค.
๋๋ ๊ทธ๋ค์ด ํด์ผ ํ ํจ์ฌ ๋ ์ค์ํ ์ผ์ด ์๋ค๋ ๋ฐ ๋์ํ๊ณ ์ด๊ฑฐํ์ C++ ์กฐ๊ฑดํ๋ ๋๋์ ์ฆ์ ๋ช
๋ฐฑํ์ง ์์ ๊ฐ๋ฅ์ฑ์ผ๋ก ์์ค๋ ๋คํ์ฑ์ ๋ณต๊ตฌํฉ๋๋ค.
์ด๊ฒ์ด ๋ด๊ฐ ๊ทธ๊ฒ์ AST ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ก ํ์ฑํ๋ ๊ธฐ์ด๋ฅผ ์ ์ถํ๊ณ ์ถ์๋ ์ด์ ์ ๋๋ค. ๋ค๋ฅธ ๋๊ตฐ๊ฐ๊ฐ ๊ทธ๊ฒ์ ์ ํํ๊ณ ํด๊ฒฐ์ฑ ์ ์ป์ผ๋ ค๊ณ ํ ์ค๋น๊ฐ ๋์ด ์์ ๊ฒ์ ๋๋ค. ์ด๊ธฐ ํผ๋๋ฐฑ์ผ๋ก ์ธํด PR์ ํ์ง ๋ชปํ๊ฒ ๋์์ต๋๋ค.
C++์์ ๋๋ ์ค์นผ๋ผ์ ํ์ด์ฌ์ด ์ด๊ฒ์ ๋ํด ๋ถ๋ฌ์ํ๋ ๊ฒ์ ๋ด
๋๋ค. ๊ทธ ์ฐ์ํจ์ ๊ฐ์ง ๋ค์ดํฐ๋ธ non-GC ์ธ์ด๋ ํ๋ฅญํ ๊ฒ์
๋๋ค.
.. ํ ๊ณณ์์ ๋ ๋ง์ ๊ธฐ๋ฅ, ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ํ์
ํ๊ธฐ ์ํด ๋ ํ์ํ๊ณ , ๋ ์ ์ ์ค์ฒฉ ๊น์ด, ์์ค ์ฝ๋์ ๋ ์ ์ ๋
ธ์ด์ฆ. ๋จ์ํ ํ์ดํ์ ์ค์ด๋ ๊ฒ์ด ์๋๋๋ค.
์ด์ฉ๋ฉด ๋ ์์ฒด ๋ฌธ์ํ๋์ด ์๋ค๊ณ ์ฃผ์ฅํ ์๋ ์์ต๋๋ค. ํจ์ ์๋ช
์ ์ฌ์ฉ ๋ฐฉ๋ฒ์ ๋ํด ๋ ๋ง์ด ์๋ ค์ค๋๋ค.
์ด๋ ค์ด ๋ถ๋ถ์ ์ ํ ๊ฒ์ฌ๊ธฐ์ด๋ฉฐ, ํ์ ํดํน์ผ๋ก ์ํ๋ ๊ฒฝ์ฐ ๋ฏธ๋ฌํ ๋ฒ๊ทธ ๊ฐ๋ฅ์ฑ๊ณผ ํผ๋์ค๋ฌ์ด ์ค๋ฅ๋ฅผ ๋ฐฉ์งํฉ๋๋ค.
๋น์ ์ด ์ด๋ฐ ๊ฒ๋ค์ ์ธ ์ ์๋ค๊ณ ์์ํด๋ณด์ญ์์ค.
fn substr(a:&str, start:int, end:int=a.len())->~str
์ค๋ฅ ๊ฒ์ฌ ์์ด ๊ทธ๋ฐ ์ข ๋ฅ์ ๊ฒ์ AST์ ํดํนํ๋ฉด ๋ง์ ์ผ์ด ์๋ชป๋ ์ ์๋ค๊ณ ํ์ ํฉ๋๋ค. ํ์ง๋ง ์์ํ ๋๋ก ์์ ํ ์ ์๋ค๊ณ ์์ํด ๋ณด์ธ์. :)
๊ทธ๋ฅ ๋ฒ๊ทธ์ ๋๋ค. ์ฅ์ ์ ๋ํด ํ ๋ก ํ ์ ์์ง๋ง ๋ฆด๋ฆฌ์ค๋ฅผ ์ฐจ๋จํ์ง๋ ์์ต๋๋ค.
๋๋ @tautologico ๊ฐ ๊ทธ์ ์ฝ๋ฉํธ์์ ์ค๋ช ํ ํ๋์ ์ข์ํฉ๋๋ค.
Rust์ ์ ์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋ฒ์ญ๋ ๊ฒ์ ๋๋ค.
fn ga(bu: int, zo: Option<int>, meu: Option<int>) {
let zo = zo.get_or_default(42);
let meu = meu.get_or_default(99);
...
}
๊ทธ๋ฆฌ๊ณ ์ด๊ฒ๋ค์ ๋ชจ๋ ์ ํจํ ํธ์ถ์ผ ๊ฒ์ ๋๋ค:
ga(10, 20, 30); // 20 and 30 are automagically
// converted to Some(20) and Some(30)
ga(10, 20); // ga(10, 20, 99)
ga(10); // ga(10, 42, 99)
ga(10, None, None); // ga(10, 42, 99)
ga(10, 20, None); // ga(10, 20, 99)
ga(10, None, 30); // ga(10, 42, 30)
๊ท์น์ ํํ Option<T>
๋งค๊ฐ๋ณ์๋ฅผ ์๋ตํ ์ ์๋ค๋ ๊ฒ์
๋๋ค. ์ฌ๊ธฐ์ Option
์ ํ์ด ์ฌ์ฌ์ฉ๋์ง๋ง ์ด๋ก ์ธํด ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ๋ ๊ตฌ์ฒด์ ์ธ OptParam
์ ํ์ด ์์ฑ๋ ์ ์์ต๋๋ค.
์ด ์ ์์ ํตํด ํธ์ถ์๋ ์์น์ ๊ด๊ณ์์ด ์ ๊ณตํ๋ ค๋ ๋งค๊ฐ๋ณ์์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ ์งํ๋ ค๋ ๋งค๊ฐ๋ณ์๋ฅผ ์ ํํ๊ฒ ์ ํํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ๋ผ๋ฏธํฐ ๋ชฉ๋ก์ ๊ธฐ๋ณธ๊ฐ์ด ๋์ค์ง ์๋ ๊ฒ๋ ์ข์ ์ผ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๊ธฐ๋ณธ๊ฐ์ด ์์ ํํ์์ ๊ตญํ๋์ง ์๊ณ ๊ฐ์ฒด์ ์ํ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๊ฑฐ๋ ๋ค๋ฅธ ๋งค๊ฐ๋ณ์์ ๋ฐ๋ผ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค.
GUI ๋ํ ์์๋ฅผ ํ์ํ๋ ํจ์์ ์ค์ ์:
fn showDialog(message: ~str,
parent: Option<Widget>,
title: Option<~str>,
type: Option<DialogType>,
icon: Option<Icon>) { ... }
// Display an info box in the middle of the screen.
// Set the title to "information", translated in the current locale
// Set the icon to an "info" icon
showDialog(~"hello, world!");
// Display a warning box in the middle of the screen.
// Set the title to "warning", translated in the current locale
// Set the icon to a "warning" icon
showDialog(~"sick, sad world!", None, None, WarningDialog);
// Display a warning box in the middle of the screen.
// Set the title to "warning", translated in the current locale
// Set the icon to a custom icon
showDialog(~"sick, sad world!", None, None, WarningDialog, bugIcon);
์ด ์์์:
parent
์ ๊ธฐ๋ณธ๊ฐ์ None
(์์ ์์).type
์ ๊ธฐ๋ณธ๊ฐ์ InfoDialog
icon
์ ๊ธฐ๋ณธ๊ฐ์ type
์ ๊ฐ์ ๋ฐ๋ผ ๋ค๋ฆ
๋๋ค.title
์ ๊ธฐ๋ณธ๊ฐ์ type
์ ๊ฐ๊ณผ ํ์ฌ ๋ก์ผ์ผ์ ๋ฐ๋ผ ๋ค๋ฆ
๋๋ค.์ด์ Option
๋ฅผ ์๋ก์ด ๊ธฐ๋ณธ ์ ํ์ผ๋ก ์ถ๊ฐํ๋ ๊ฒ๋ ์ ์ํฉ๋๋ค. ๊ทธ๊ฒ์ ํ๋ฒํ ์ค๋๋ enum
์ด๋ฏ๋ก ์ง๊ธ์ ์์ ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ธฐ๋ฅ์
๋๋ค.
IMO ๊ธฐ๋ณธ ์ธ์๊ฐ ํค์๋ ์ธ์๋ก 10์ต ๋ฐฐ ๋ ๋ซ๋ค๊ณ ๋ง๋ถ์ด๊ณ ์ถ์ต๋๋ค. ๋๋ ๊ธฐ๋ณธ args๊ฐ ๋ง์์ ๋ค์ง ์์ง๋ง ํค์๋ args๋ ์์ต๋๋ค.
ํ๋๋ ๋ค๋ฅธ ํ๋์ ๋๋ค๋์ด๋ฉฐ ๊ธฐ๋ณธ๊ฐ์ ๊ทธ ์์ฒด๋ก ์ฌ์ ํ ์ ์ฉํฉ๋๋ค. ๋ช ๊ฐ์ง ์ถ๊ฐ ํ๋๊ทธ๊ฐ ์์ต๋๋ค. ๊ธฐ๋ณธ๊ฐ๋ง ์ํ๋ฉด ์๋ตํ ์ ์์ต๋๋ค.
๋ ๋ค ์์ผ๋ฉด ์ ๊ฒฐํฉ๋๋ค๋ ๋ฐ ๋์ํ์ต๋๋ค.
๋ฌธ์ ๋ ์ค์ ๋ก ๊ตฌํํ๋ ๊ฒ์
๋๋ค. :)
typechecker/type inferer์ ๋ค์ ์ฅ์ฐฉํ๋ ๋ฐฉ๋ฒ ๋๋ ์ฌ๋กฏ์ ๋ฃ๋ ๋ฐฉ๋ฒ.
์์น ์ธ์์ ๊ธฐ๋ณธ๊ฐ์ ์ํธ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ ํค์๋ ์ธ์์ ๋ํ ๊ธฐ๋ณธ๊ฐ๋ง ๊ฐ์ง๊ณ ์์ง ์์ต๋๊น? (์ด๊ฒ์ด ๊ตฌํ๋ ๊ฒฝ์ฐ).
IMO ... "๋ ์ค ํ๋"๊ฐ ์๋๋๋ค.
๋ ๋ค ์ ์ฉํฉ๋๋ค. ํ๋๋ ๊ตฌํํ๊ธฐ๊ฐ ๋ ๊ฐ๋จํ๊ณ ๊ตฌ๋ฌธ์์ ์ ํํ ์ ์๋ ํญ๋ชฉ์ด ์ ์ต๋๋ค.
๊ทธ๋์ ์ฐ๋ฆฌ๊ฐ ๊ทธ๊ฒ์ ๋๋ค๋๋ก ์ผ๊ฑฐ๋ ๋จผ์ ๊ตฌํํ๋ ค๊ณ ํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์
๋๋ค...
๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ค์ ๋ ๊ฐ์ ์๋ตํ๋ ๊ฒ์ด ์ด๋ป๊ฒ ์ผ๋ฐ ํจ์ ํธ์ถ๋ณด๋ค ๋ ๋น๋ฐ์ค๋ฝ์ต๋๊น? C++ ํ๋ก๊ทธ๋๋จธ๋ ์ด๋ฏธ thsi์ ๋ํ ๋งค๊ฐ๋ณ์ ์ ๋ ฌ์ ์ต์ํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋์ ์ ์ ํ ๊ธฐ๋ณธ๊ฐ์ด ์๋ ์ผ์ข ์ ์ ์ด ํ๋๊ทธ ๋จ์ด.. ์ค์ํ ์ ๋ณด๋ง ๋์ดํ์ฌ ๋ช ํํ ํ๋ ๊ฒ(..,BLAH_DEFAULT)์ ์์ฑํ๋ ๋์ ๊ฐ์ ์๋ตํฉ๋๋ค. Rust๊ฐ ํ์ํ ์ฌ๋๋ค์ ์ด๋ฏธ C++๋ฅผ ๋ค๋ฃจ์์ผ๋ฏ๋ก ๊ทธ๊ฒ์ ์ต์ํด์ ธ ์์ ๊ฒ์ ๋๋ค.
๋๋ ์ค๋ ์ผ์ฐ ์์ ๋ด ์ ์ (๊ตฌ์กฐ์ฒด๋ฅผ ์ด๋ฏธ ํค์๋ ์ธ์์ ๋ํ ๊ตฌ์ฑ ์์๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ผ๋ก ๋ณด๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ณธ ์ธ์์ ๊ฐ๊น์ด ๊ฒ์ ์ ๊ณตํ๊ธฐ ์ํด ๊ธฐ์กด struct-extension ๊ตฌ๋ฌธ์ ํ์ฉํ๋ ค๊ณ ์๋ํจ)์ด ํ ๊ฐ์ง ์ค์ํ ๋ฌธ์ ๋ฅผ ๋ฌด์ํ๋ค๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค. ๋ด๊ฐ ์ ์ํ ๊ตฌ๋ฌธ _every_ ์ธ์์ ๋ํ ๊ธฐ๋ณธ๊ฐ์ ์ ๊ณตํ ์ ์๋ค๊ณ ๊ฐ์ ํ์ต๋๋ค(๊ทธ๋ฐ ๋ค์ ๋ชจ๋ ๋จ์ผ struct ๋งค๊ฐ๋ณ์๋ก ๋ค์ด ์ฌ๋ ค์ง).
์ด๊ฒ์ ๋ฌผ๋ก ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ค์ด ์๋๋๋ค. ํ๋๋ ํ์ ์ธ์์ ์ ํ ์ธ์๊ฐ ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
ํจ์ ์ ์ธ ๊ตฌ๋ฌธ์ ๋ ์ด์ ์ฌ์ฉํ์ง ์๊ณ ์ด๋ฏธ ์๋ ๊ธฐ๋ฅ์ ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ฐพ๊ณ ์ถ์ต๋๋ค. ์ฃผ๋ก ํจ์/ํด๋ก์ /๋ฉ์๋๋ฅผ ์์ฑํ ์ ์๋ ๋ค์ํ ๋ฐฉ๋ฒ ๋๋ถ์ ํจ์ ์ ์ธ์ด _์ด๋ฏธ ํธ์ด ๋ง๊ธฐ ๋๋ฌธ์ ๋๋ค.
ํ์ฌ ๋ธ๋ ์ธ ์คํ ๋ฐ์ ๊ตฌ์กฐ์ฒด ํญ๋ชฉ ์ ์์์ ํ๋์ ๋ํ ๊ธฐ๋ณธ ํํ์์ ์ถ๊ฐํ์ฌ ๊ธฐ์กด ๊ตฌ์กฐ์ฒด ๊ตฌ๋ฌธ์ ํ์ฉํ ์ ์๋์ง ์ฌ๋ถ์ ์ค์ ์ ๋ก๋๋ค. ๊ทธ๋ฌ๋ฉด ์ญ์ ํ ์ ์๋ ์ผ๋ถ ํ๋์ ํ์ ํ๋๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ ๊ฒ:
struct Foo { x: int = 0, y:int = 0, z:int = 0 }
fn bar(f: Foo) {
printf!(f);
}
struct Baz { x: int, y: int, z:int = 0 }
fn quux(g: Baz} {
printf!(g);
}
fn main() {
bar(Foo{y: 5});
quux(Baz{y: 5}); // ~ERROR: required field, `x`
}
@pnkfelix ๋๋ ๊ทธ ์ ์์ด ๋ง์์
fn bar({ x: int = 0, y:int = 0, z:int = 0 }) {
printf!(f);
}
fn quux({ x: int, y: int, z:int = 0 }) {
printf!(g);
}
fn main() {
bar({ y: 5 });
quux({ y: 5 }); // ~ERROR: required field, `x`
}
@visionmedia @bstrie ๊ตฌ์กฐ์ฒด ์ด๋ฆ์ ์์ ๋ ๊ฒ์ ๋ํด ์ ๋ง๋ก ๊ฑฑ์ ํ ํ์๊ฐ ์์ต๋๊น? ๋ฆฌ๋ฐ์ธ๋ฉ ์ฌ์ฉ ์ ์ธ ์ ํธ์ถ ์ฌ์ดํธ์์ ์ถ๊ฐ ๋ฌธ์์ ์ต์ ์๋ฅผ 3(์ด๋ฆ + ์ผ์ชฝ ๋ฐ ์ค๋ฅธ์ชฝ ๋๊ดํธ์ ๊ฒฝ์ฐ)์ผ๋ก ์ค์ฌ ๊ธด ์ด๋ฆ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ง ์์ต๋๊น?
์ฆ, bstrie๊ฐ ๋์๊ฒ ์ ์ํ ServerOpts ์:
fn main() {
use O = html::StartServerOptions;
...
html::start_server(O{port: 10088});
}
@pnkfelix ์ข์์
struct Foo {
x: int = 10,
y: float = 1.0
}
๊ตฌ๋ฌธ์ด์ง๋ง ํฉ๋ฆฌ์ ์ธ ํ์ ์ธ์(๋ถํํ๋ ์ด๋ฆ์ด ์ง์ ๋์ง ์์)๋ฅผ ์ป๋ ๋ฐ ํ์ํ์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ํ์ ์ธ์๋ฅผ ๋ณ๋๋ก ์ ๋ฌํ๋ฉด ๋ฉ๋๋ค.
struct FooOptions { ... }
static default: FooOptions = FooOptions { ... };
fn foo(compulsory: int, required: uint, necessary: float, optionals: FooOptions) { ... }
FWIW, ๋๋ ๋ํ ๊ธฐ๋ณธ ๊ฐ ์์ด๋์ด๊ฐ ์๋ ๊ตฌ์กฐ์ฒด๋ฅผ ์ข์ํฉ๋๋ค. ๋๋ ๊ทธ๊ฒ์ด ๋ฐ๋ก ๊ฐ๊ธฐ๋ผ๊ณ ์๊ฐํฉ๋๋ค.
struct Test {
m: int,
y: int
}
static DEFAULT: Test = Test{m: 10, y: 15};
Test{y: 5, ..DEFAULT}
๋๋ ์ ์ ๋ด๋ถ์ ๊ตฌ์กฐ์ฒด ๊ธฐ๋ณธ๊ฐ๋ ์ข์ํฉ๋๋ค.
ํด๋น ๊ตฌ๋ฌธ์ผ๋ก ๊ตฌ๋ฌธ ๋ถ์์ ์ํํ์ง๋ง ์ค์ ๋ก๋ ์ฌ์ฉํ์ง ์์์ต๋๋ค. ์ฌ์ ํ typechecker ์์ค ๋ฑ์ ๋๋ฌ๋ณด๋ ๋ฐฉ๋ฒ์ ๋ชจ๋ฆ ๋๋ค...
์๋ง๋ ์ด๋ฏธ ๊ธฐ๋ณธ ๋ฉ์ปค๋์ฆ์ด ์๋ค๋ ์ฌ์ค๋ก ์ธํด ๊ตฌํํ๊ธฐ๊ฐ ์ข ๋ ์ฌ์์ง ์ ์์ต๋๋ค.
๋ต์ฅ. ์ต๋ช
๊ตฌ์กฐ์ฒด๋ ์๋ ๊ทธ๊ฒ๋ค์ด ์์๋ค๊ณ ์๊ฐํ์ง๋ง '์ด์ํ ์ํธ ์์ฉ ๋๋ฌธ์'์ ๊ฑฐํด์ผ ํ์ต๋๊น?
๋๋ ๋ ๊ฐ์ง ๋ฉ์ปค๋์ฆ์ ๋ชจ๋ ์ฌ์ฉํ๋ ๊ฒ์ ์ ํธํฉ๋๋ค. ์๋ง๋ ๋งค๊ฐ๋ณ์ ๊ตฌ์กฐ์ฒด๋ _keyword_ ์ธ์์ ํ์์ฑ์ ์ํํ ์ ์์ง๋ง C++์์์ ๊ฐ์ ํํ ๊ธฐ๋ณธ๊ฐ์ ์ฌ์ ํ โโํธ๋ฆฌํ ๊ฒ์
๋๋ค.
์ฐธ๊ณ ๋ก -
http://www.parashift.com/c++-faq-lite/named-parameter-idiom.html
lol - ํฅ๋ฏธ๋กญ์ง ๋ง ์ง์ ํ ํค์๋ ์ธ์๋ ์ด์ ๊ฐ์ ๋ณด์ผ๋ฌ ํ๋ ์ดํธ ๋ฌด๊ฑฐ์ด ํดํน์ ํ์์ฑ์ ํผํ ๊ฒ์
๋๋ค.
๋ต์ฅ. ์ต๋ช ๊ตฌ์กฐ์ฒด๋ ์๋ ๊ทธ๊ฒ๋ค์ด ์์๋ค๊ณ ์๊ฐํ์ง๋ง '์ด์ํ ์ํธ ์์ฉ ๋๋ฌธ์'์ ๊ฑฐํด์ผ ํ์ต๋๊น?
์๋ ๋ชจ๋ ๊ตฌ์กฐ์ฒด ์ ํ์ ๊ตฌ์กฐ์ ์ด์์ต๋๋ค. ํน์ฑ๊ณผ์ ์ด์ํ ์ํธ ์์ฉ์ผ๋ก ์ธํด ์ ๊ฑฐ๋์์ต๋๋ค(๋ช ๋ชฉ ๊ตฌ์กฐ์ฒด ์ ํ์ผ๋ก ๋์ฒด๋จ).
๋๋ ๊ตฌ์กฐ์ฒด ์ ์ ์์ด๋์ด์ ๊ธฐ๋ณธ๊ฐ์ ์ข์ํฉ๋๋ค. ์ด๊ฒ์ ์ดํดํ๊ธฐ ์ฝ๊ณ ์ ์ด๋ ๊ตฌ์กฐ์ฒด๋ฅผ ๊ตฌ์ฑํ ๋ ๋ชจ๋ ํ๋๋ฅผ ์ด๊ฑฐํด์ผ ํ๋ ๊ฒ์ ํผํ ์ ์์ต๋๋ค. ์ด๊ฒ์ "์ต์ " ์ ํ ๊ตฌ์กฐ์ฒด์ ๋ํ ๋ฌธ์ ์ ๋๋ค. ์๋ก์ด "์ ํ์ " ํ๋๊ฐ ์ถ๊ฐ๋ ๋ ๋ชจ๋ ํธ์ถ ์ฌ์ดํธ๊ฐ ๋ค์์ผ๋ก ์์ ๋์ด์ผ ํ๋ค๋ ๊ฒ์ ์๋ฏธํ๊ธฐ ๋๋ฌธ์ ๋๋ค. 0/None/etc๋ก ์ด๊ธฐํํฉ๋๋ค.
Perl(๊ธฐ๋ณธ๊ฐ์ ์์ ํจํด์), Python 2( foo() takes at least 2 arguments (2 given)
์ป์ ์ ์์), Python 3(๊ธฐ๋ณธ๊ฐ ์์ด ๋ช
๋ช
๋ ์ ์ฉ ์ธ์๋ฅผ ๊ฐ์ง ์ ์์)์์ ๋์จ ์ ๋ ๊ฒธ์ํ๊ฒ ์ ์ํฉ๋๋ค. ๊ตฌ์กฐ์ฒด๋ฅผ ํจ์์ ๋ํ ์ต์ข
์ธ์๋ก ์ ์ธํ๋ ๊ฒ์ ํ์ฉํ์ง๋ง ํธ์ถ์๊ฐ ๊ตฌ์กฐ์ฒด ํ๋๋ฅผ _inline_ํ๊ฒ ํ๊ธฐ ์ํ _์ญ๋_ ๋นํธ์ ์คํ.
์
impl int {
struct FromStrOptions {
radix: uint = 10
}
fn from_str(s: str, opts: FromStrOptions) -> int {
// ...
}
}
int::from_str("4", radix: 10);
์ฅ์ :
do
ํ์ฌ ๋ธ๋ก์ ์ ๋ฌํ๋ ๋ฐฉ์๊ณผ ์ ์ฌํฉ๋๋ค. ์ด๋ ์์ ํ ํธ์ถ์์ ๊ด์ฌ์ฌ์
๋๋ค. (๋ง์ง๋ง ์ธ์๊ฐ ๊ตฌ์กฐ์ฒด์ด์ง๋ง kwargs์ ์ฌ์ฉํ์ง ์์ผ๋ ค๋ ๊ฒฝ์ฐ ์ตํธ์ธ/์์ํ๋ ๋ฐฉ๋ฒ์ด ํ์ํฉ๋๊น? ์๋ฌด๋ ์ ๊ฒฝ ์ฐ์ง ์์๊น์? ์๋ฌด๋ do
์ ๊ฒฝ ์ฐ์ง ์๋๋ค๊ณ ์๊ฐํฉ๋๋ค. **kwargs
์ ๊ฐ์ ๋ฌด๋ฃ: ๊ทธ๋ฅ ๊ตฌ์กฐ์ฒด๋ฅผ ๋ง๋ค๊ณ ์์น ์ธ์๋ก ์ ๋ฌํ๋ฉด ๋ฉ๋๋ค.๋จ์ :
5
์ ๋ฌํ๊ณ ํจ์์ argspec์์ ์ ํ์ ์ ์ถํ๋ ๊ฒ ์ด์์ ์๋๋ผ๊ณ ์๊ฐํฉ๋๋ค.do
๊ด์ฉ๊ตฌ์ ์ํธ ์์ฉํ๋ ๋ฐฉ๋ฒ์ด ๋ช
ํํ์ง ์์ต๋๋ค. ๋ง์ง๋ง ์ธ์ _write_ ํด์ผ ํ๋ค๊ณ ๋งํ๋ ๊ฒ์ด ์ถฉ๋ถํ ์ฌ์ธ ์ ์์ต๋๋ค. ์ฆ, do
์ ํจ๊ป ์ฌ์ฉ๋ ๋๋ง ๋ง์ง๋ง ์ธ์๋ก ์๋ํฉ๋๋ค.FWIW int::from_str("4", radix: 10)
๋ ์ด์ ์ ์ ์๋ :
๋ฅผ ์ ํ ์ง์ ์ฐ์ฐ์๋ก ์ฌ์ฉํ๋ ๊ฒ๊ณผ ์ถฉ๋ํฉ๋๋ค.
์ ์ฃผ, ASCII์ ์ํด ์ ์ง๋จ.
int::from_str("4", radixโ 10)
๋๋ ํค์๋ args์ ๋ํด = ์ฌ์ฉ์ ํฌํํ๊ณ , ํ์ ํํ์ ๋ด ํ ๋น์ ๋ํ C์ ์์ด๋์ด๋ฅผ ํ์ฉํ์ง ์์ต๋๋ค. (์ด์จ๋ ๋๋ถ๋ถ์ ๋ถ๋ณ์ ์์ด๋์ด์๋ ์ ํฉํ์ง ์์ ์ ์์) .. ์ค์นผ๋ผ๊ฐ ์ด๊ฒ์ ๊ฐ์ง๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. C์ ๊ฐ์ ๊ตฌ๋ฌธ์ ๋ง๋ ๊ฐ๋ฅํ ์๋ ๋ฌด์์ ๋๊น?
์ด ์ค ํ๋๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ๋ํด ๋ธ๋ ์ธ์คํ ๋ฐํ ์ ์๋ ๊ณณ์ด ์์ต๋๊น? ์ธ์ ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ํจ์ ์ค๋ฒ๋ก๋์ฒ๋ผ ๋ณ์ argumentmnt ์คํ์ผ์ด ๋ด๋ถ์ ์ผ๋ก ๊ตฌํ๋ ์ ์๋์ง ๊ถ๊ธํฉ๋๋ค(๊ฑฐ์ args ์๊ฐ ํจ์ ์ด๋ฆ์ ์ ๋ฏธ์ฌ๋ก ๋ถ์ ๊ฒ์ฒ๋ผ .. )
์ฐ๋ฆฌ ๋ ์ด์ ฏ๋ฐค ์ฃผ๊ฐ
ํจ์ ์ ์ธ/ํธ์ถ ํ์์ ๋ ๋ณต์กํ๊ฒ ๋ง๋๋ ๊ฒ์ ์ข์ง ์์ผ๋ฉฐ ์ด์ ์๊ฒฌ ์์ ์ ์ํ ๋๋ก ๊ตฌ์กฐ์ฒด ์ ์ธ์ ํ์ฅํ์ฌ ํ๋ ๊ธฐ๋ณธ๊ฐ(const ํํ์๊ณผ ์ฐ๊ฒฐ๋จ)์ ํ์ฉํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ธ ๋ฐฉ๋ฒ์ด๋ผ๋ ๋ฐ ๋ชจ๋๊ฐ ๋์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ฌ๊ธฐ์์ ์ํ๋ ๊ฒ์ ๋๋ถ๋ถ.
ํ์ ๋ํ ์ด๋ค ๋ฐฉ์์ผ๋ก๋ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฒ์ด 1.0 ๋ฆด๋ฆฌ์ค์ ์ฐ์ ์์๊ฐ ์๋๋ผ๊ณ ๊ฒฐ์ ํ์ต๋๋ค. ํ๋ก์ ํธ ๋ฆฌ๋ @brson ์ 1.0 ์ดํ(์: 1.1 ๋ฆด๋ฆฌ์ค์ ๊ฒฝ์ฐ)๋ฅผ ์ํด ์ด ์์ ์ ๋ํ ํ๋กํ ํ์ดํ์ ๋จ๊ฒจ๋ ๊ฒ์ ์ ์ํ์ต๋๋ค.
์ด๊ฒ์ ๋ชจ๋ ๊ธฐ์ฌ์์๊ฒ ๊ฐ๋ ฅํ ํํธ์ ๋๋ค. ์ํ๋ ๋ชจ๋ ๊ฒ์ ํดํนํ์ญ์์ค. ๊ทธ๋ฌ๋ 1.0 ๋ฆด๋ฆฌ์ค๊ฐ ๋์ฌ ๋๊น์ง ์ด ๋ฒ๊ทธ์ ๋ํ pull ์์ฒญ์ด๋ r+๋ฅผ ์ ์ถํ์ง ๋ง์ญ์์ค.
์์ ๋ค์ด, Rust๋ ๋๋ผ์ด ์ธ์ด์ ๋๋ค. ๋๋ฌด ๋ง์ ์ผ์ ์ ๋๋ก ํด์ ์๊ธฐ์ง๋ ์์ต๋๋ค. ํ์ง๋ง ์ด ๊ธฐ๋ฅ์ 1.0 ์ดํ๋ก ์ฐ๊ธฐํ๋ ๊ฒ์ ์ค์๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์์ธํ ์ค๋ช ํ๊ฒ ์ต๋๋ค.
๊ธฐ๋ณธ ํจ์ ์ธ์๋ ์ข์ API ๋์์ธ์ ์ํด _critical_์ ๋๋ค. ๊ทธ๊ฒ๋ค์ด ์์ผ๋ฉด ๋ ๊ฐ๋จํ API๊ฐ ๋ณต์กํด์ง๋๋ค. std ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์:
concat
๋์ concat
๋ฐ connect
.split_iter
๋ฐ splitn_iter
์ด์ ๋จ์ง split_iter
์ต์
์ผ๋ก count
. rsplit_iter
๋ฐ rsplitn_iter
์
๋๋ค.๋ค๋ฅธ ์ฌ๋.
๊ธฐ๋ณธ ์ธ์๋ก ์ ๊ฑฐํ ์ ์๋ ์ด๋ฌํ ๋ชจ๋ ์ถ๊ฐ ๊ธฐ๋ฅ ์ด๋ฆ์ ๊ฐ๋ ๊ฒ์ ์ธ์ง ๋ถํ๋ฅผ ๋ถํ์ํ๊ฒ ์ฆ๊ฐ์ํต๋๋ค. ์ฌ์ฉ์๋ ์ด์ ํ๋๊ฐ ์๋ ๋ ๊ฐ(๋๋ ๊ทธ ์ด์)์ ์ด๋ฆ์ ์์์ผ ํฉ๋๋ค.
๊ธฐ๋ณธ ์ธ์๊ฐ 1.0 ์ดํ๋ก ์ฐ๊ธฐ๋๋ฉด ์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ ๋๋ฌธ์ std ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ด๋ฌํ ํจ์๋ฅผ ์ ๊ฑฐํ ์ ์์ต๋๋ค. ์ด๊ฒ์ ๊ธฐ๋ณธ ์ธ์๊ฐ ๋ฏธ๋์ ์ถ๊ฐ๋๊ณ ํจ์์ "๋ฐ๋๋ผ" ๋ฒ์ ์ด ์ด์ ๋ค๋ฅธ ๋ณํ์ ์์ ์ ์ํํ ์ ์๋๋ผ๋ ์ด์ ๋ณํ์ด ๊ณ์ ์ ์ง๋๊ณ ๋๊ตฐ๊ฐ๊ฐ ํ์คํ ์ฌ์ฉํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ์๋ ์ด์ ๋ํด ์์์ผ ํจ์ ์๋ฏธํฉ๋๋ค. ์ค์๋ก๋ผ๋.
๋ฐ๋ผ์ ์ถ๊ฐ์ ์ธ ์ธ์ง ๋ถํ๊ฐ โโ_์์ํ_ ๋จ๊ฒ ๋ฉ๋๋ค.
[NB ๋งค๊ฐ๋ณ์ ์ ํ ๊ธฐ๋ฐ ํจ์ ์ค๋ฒ๋ก๋ฉ์ ๋ํด ๋์ผํ ์ฃผ์ฅ์ ํ ์ ์์ง๋ง(ํ์ฌ ํน์ฑ ๊ธฐ๋ฐ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋๋ฌด ๋ฒ๊ฑฐ๋กญ๊ณ std ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจ์์์ ์ด๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค), ์ด ๋ฌธ์ ๋ ๊ทธ ๋ ผ์๋ฅผ ์ํ ์ฅ์๊ฐ ์๋๋๋ค.]
Rust ๊ฐ๋ฐ์ ์ฌ๋ฌ๋ถ, Rust๋ฅผ ์์ ํ๊ณ ๋ฉ์ง๊ฒ ๋ง๋ค์ด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!
์ ๋ ํต์ฌ ํ์์ ์ด ๋ฌธ์ ์ ๋ํด ์ ์ ์๊ฐ์ ํ ์ ํ๋ ์ฌ๋๊ณผ ์ํตํ๊ณ ์ ํ๋ ๊ทน๋์ ๋๋ด์ ๊ฐ์กฐํ๊ธฐ ์ํด "๋จผ ๋ฏธ๋" ์ด์ ํ๋ฅผ ์ถ๊ฐํ๊ณ ์์ต๋๋ค. ์ง๊ธ Rust์ ๊ธฐ์ฌํ๊ณ ์ถ๋ค๋ฉด ๋ง์ผ์คํค 1(์ ์ ์๋จ)์ ์๋ 41๊ฐ์ ๊ณต๊ฐ ๋ฒ๊ทธ ์ค ํ๋๋ฅผ ํด๊ฒฐํ์ธ์.
https://github.com/mozilla/rust/issues?milestone=12&state=open
๋๋ ๋ง์ผ์คํค 2(์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ)์ ์๋ 104๊ฐ์ ์ด๋ฆฐ ๋ฒ๊ทธ ์ค ํ๋:
https://github.com/mozilla/rust/issues?milestone=13&state=open
๋๋ ๋ง์ผ์คํค 3์ ์๋ 68๊ฐ์ ์ด๋ฆฐ ๋ฒ๊ทธ ์ค ํ๋(์ฐ๋ฆฌ๊ฐ ํ ์์ ์์ ๋์ํ ๊ธฐ๋ฅ์ Rust 1.0์ ๋ฆด๋ฆฌ์คํ๋ ๋ฐ ์ค์ํฉ๋๋ค):
https://github.com/mozilla/rust/issues?milestone=14&state=open
๋๋ ๋ฒ๊ทธ ์ค ํ๋์ ๋ํด ์ค๋ช ์ ์์ฒญํ๊ฑฐ๋ ์งํ ๋ฐฉ๋ฒ์ ์ ์ํ๊ธฐ ์ํด ๋๊ธ์ ๋ฌ ์๋ ์์ต๋๋ค. ์ ํํ ์ ์๋ ๋ฒ๊ทธ๋ 213๊ฐ์ ๋๋ค. ์ด ์์ ์์ ๊ทธ ์ค ํ๋๋ฅผ ์งํํ๋ ๊ฒ์ด ์ด ๋ฌธ์ ๋ณด๋ค Rust์๊ฒ ํจ์ฌ ๋ ๊ฐ์น๊ฐ ์์ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ๋ฒ๊ทธ ์ค ํ๋๋ฅผ ๋ซ์ ์ ์๋ ์ฌ๋์ ๋๊ตฌ์๊ฒ๋ ์ต๊ณ ์ ๊ฐ์ฌ๋ฅผ ํํ ๊ฒ์ ๋๋ค.
ํต์ฌ ํ์ด ํด์ผ ํ ์ผ์ด ํจ์ฌ ๋ ๋ง๋ค๋ ๊ฒ์ ์ ์ ์์ง๋ง '๊ทน๋์ ๋๋ด์ ์ ๋ฌ'ํ๋ ๊ฒ์ ๋ถ๋๋ฌ์ด ์ผ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
Vallorics ์๊ฒฌ์ +1. ์ด๋ฆ์ ์ง๋ ๊ฒ์ ์ด๋ ต์ต๋๋ค. ๋ฌธ์๋ฅผ ํํค์น๊ณ ๋ ๋ง์ ์ด๋ฆ์ ๋ฐฐ์ฐ๋ ๊ฒ์ ์ง๊ฒน์ต๋๋ค..; ๊ธฐ๋ณธ args/overloading์ ์ฌ์ฉํ๋ฉด ๋ ์ฝ๊ฒ ํ ์ ์์ต๋๋ค. ํค์๋ args๋ฅผ ์ฌ์ฉํ๋ฉด ์ด์ ๋ํด C++๋ฅผ ๋ฐ์ด๋๋ ๊ธฐํ๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค. (๋๋ github์ด ํฌํ๋ฅผ ํ์ผ๋ฉด ์ข์์ ํ
๋ฐ, ์ฌ๊ธฐ์ ์กฐ๊ธ ๋ ์์ ํ๋ ๋์ +1์ ๋๋ ์ ์๋ ์์ต๋๋ค.)
@Valloric ๋๋ ์ ์ ์ผ๋ก ๋์ํ๋ฉฐ(์ด์ ์ ๋งํ๋ฏ์ด)
์ด๊ฒ์ด ์ข์ ์ธ์ด ๊ธฐ๋ฅ์ด ๋ ๊ฒ์ด๋ผ๋ ํฉ์๋ ์์ต๋๋ค. ๋ช ๋ช ๋/๊ธฐ๋ณธ ๋งค๊ฐ๋ณ์์ ๋ํ ๋ชจ๋ ์ธ๋ถ ์ฌํญ์ด ํฌํจ๋ ๊ตฌ์ฒด์ ์ธ ์ ์๋ ์์ต๋๋ค. 1.0์์๋ ๋ฐ์ํ์ง ์์ ๊ฒ์ ๋๋ค. ์๋ํ๋ฉด ๋งค์ฐ ๋ถํ์ํ ๊ตฌ๋ฌธ ์คํ์ ๊ฟ๊พธ๊ธฐ ์ ์ ์์ ํ๊ฑฐ๋ ์ ๊ฑฐํ ๊ธฐ์กด์ ํต์ฌ ์ธ์ด ๊ธฐ๋ฅ ์ธํธ๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
'dreaming up'์ ๋ญ๊ฐ ๊ธฐ๋ฐํ ๊ฒ์ฒ๋ผ ๋ค๋ฆฌ์ง๋ง ์ด๋ฌํ ๊ธฐ๋ฅ์ ๋ค๋ฅธ ์ธ์ด์์ ์ ์ฆ๋์์ต๋๋ค. ๋จ์ํ ๊ตฌ๋ฌธ ์คํ์ด ์๋๋ผ ํ์ํด์ผ ํ๋ ์ฝ๋์ ์์ ์ค์ด๊ณ ๋ฐฐ์์ผ ํ๋ ๊ธฐํธ์ ์๋ฅผ ์ค์ ๋๋ค.
1.0์์๋ ๋ฐ์ํ์ง ์์ ๊ฒ์ ๋๋ค. ์๋ํ๋ฉด ๋งค์ฐ ๋ถํ์ํ ๊ตฌ๋ฌธ ์คํ์ ๊ฟ๊พธ๊ธฐ ์ ์ ์์ ํ๊ฑฐ๋ ์ ๊ฑฐํ ๊ธฐ์กด์ ํต์ฌ ์ธ์ด ๊ธฐ๋ฅ ์ธํธ๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
์์ /๊ตฌํํด์ผ ํ๋ ๋ค๋ฅธ ์ธ์ด ๊ธฐ๋ฅ์ด ๋ ์ค์ํ์ง ์๋ค๋ ๋ง์ ์๋๋๋ค. ๊ทธ๋ค์ ์๋ง ๊ทธ๋ด ๊ฒ์ด๋ค. ๊ทธ๋ฌ๋ ์ด๋ ์ชฝ๋ ์๋๋๋ค. ๋ด๊ฐ ๋งํ๊ณ ์ถ์ ๊ฒ์ ์ด ๊ธฐ๋ฅ์ด ์์ผ๋ฉด std ๋ผ์ด๋ธ๋ฌ๋ฆฌ _forever_์ API ํ์ง์ ์ํฅ์ ๋ฏธ์น๊ธฐ ๋๋ฌธ์ 1.0์์ (๋ค๋ฅธ ๊ธฐ๋ฅ๊ณผ ํจ๊ป) ์ด ๊ธฐ๋ฅ์ ๊ฐ๋ ฅํ๊ฒ ๊ณ ๋ คํด์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค.
์ด๊ฒ์ ์๋ง๋ ๋ ผ์์ ์ฌ์ง๊ฐ ์๋ ์๊ฒฌ์ผ ์ ์์ง๋ง IMO ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ํต์ฌ ๊ธฐ๋ฅ๋ณด๋ค ์ ๊ณตํ๋ API์ ์ํด ๋ ๋ง์ด ์ด๊ณ ์ฃฝ์ต๋๋ค. Python์ "๋ฐฐํฐ๋ฆฌ ํฌํจ" ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ ์ฒด ์ธ์ด๋ฅผ ํ๋งคํ์ต๋๋ค. CPAN์ Perl์ ์ ์งํฉ๋๋ค. .Net์ C# ์ฝ๋ ์์ฑ์ ํ๋ฅญํ๊ฒ ๋ง๋ค๊ณ LINQ๋ ์๊ฒ ์ฌ ๋นต ์ดํ๋ก ์ต๊ณ ์ ๋๋ค. C++์ ๊ฐ์ฅ ํฐ ๋จ์ ์ค ํ๋๋ ์ฐ์ํ๊ณ ํ์คํ๋ API๊ฐ ์๋ค๋ ๊ฒ์ ๋๋ค. ๋ฑ.
API๋ ์ธ์ด์ ์ฑ๊ณต์ ๋งค์ฐ ์ค์ํ๋ฏ๋ก _good_ API ์์ฑ์ ๊ฐ๋ฅํ๊ฒ ํ๋ ๊ธฐ๋ฅ์ด "๋นํ์์ ์ธ ๊ตฌ๋ฌธ ์คํ"์ผ๋ก ํ๊ธฐ๋์ด์๋ ์ ๋ฉ๋๋ค.
@dobkeratops : _dreaming up_ ์ด๋ผ๋ ๋ง์ ํด์ ์์ง ์์ ํ ์ ์์ด ๋ ๊ฒ์ด ์๋๋ผ์ ์์ฌ๊ฒฐ์ ๋จ๊ณ๊ฐ ์๋๋ผ๋ ์ ์ ๊ฐ์กฐํ๊ณ ์ถ์ต๋๋ค.
์ด ํ ๋ก ์ ๋น์์ฐ์ ์ ๋๋ค. ๋ค๋ฅธ ์ฌ๋์ ์๊ฐ์ ๋ ์ด์ ์๋ชจํ์ง ์๋๋ก ๋ฌธ์ ๋ฅผ ์ข ๋ฃํ๊ฒ ์ต๋๋ค. ๋๊ตฐ๊ฐ๊ฐ ์ง๊ธ๋ถํฐ 1๋ ํ ๋๋ ๊ทธ ์ดํ์ ์ด ์ฑ ์ ๋ค์ ์ด๊ฑฐ๋(๋๋ ์ ๋ฌธ์ ๋ฅผ ์์ํ๊ธฐ๋ฅผ ์ํ๋ฉด) ๊ด์ฐฎ์ ๊ฒ์ ๋๋ค.
๋๊ตฐ๊ฐ๊ฐ ๊ฑฐ์ ๋ชจ๋ ์ธ๋ถ ์ฌํญ(๋ฌธ๋ฒ, ์๋ฏธ๋ก )์ด ํฌํจ๋ ์ ์์ ์ ์ํ๋ฉด ๋ฉ์ผ๋ง ๋ฆฌ์คํธ์ ๊ฒ์ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ด๋ฅผ ์ํํ๋ ํน์ ๋ฐฉ๋ฒ์ด _์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ_์ด๋ผ๋ ํฉ์์ ๋๋ฌํ๋ค๋ฉด ๋ฌธ์ ๋ฅผ ์ด๊ณ once
๊ธฐ๋ฅ๊ณผ ๊ฐ์ ํ๋๊ทธ ๋ค์ ์คํ์ ๊ธฐ๋ฅ์ผ๋ก ๊ตฌํํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์
๋๋ค.
๋๋ ๋ ๋ฒ์งธ @thestinger -- ๋๊ตฐ๊ฐ(๋๋ ์์์ ์ฌ๋๋ค)๊ฐ ์์ ํ ์ ์์ ๊ฐ์ง๊ณ ์๊ฑฐ๋ ํ ๋ก ์ ์ํ ๋ช ๊ฐ์ง ๋ช ํํ๊ฒ ์ฒ ์๊ฐ ์๋ ๊ณต๋ฐฑ์ด ์๋ ์ ์์ ๊ฐ์ง๊ณ ์๋ค๋ฉด ๊ทธ ์ฌ๋์ด ๊ทธ๊ฒ์ ์คํํ๋ ๊ฒ์ด ์ ์ ํ ๊ฒ์ ๋๋ค. ๋ฉ์ผ๋ง ๋ฆฌ์คํธ๋ก. ์ฐ๋ฆฌ๊ฐ ๊ทธ ์ ์์ ๊ตฌํํ๋ค๋ ์ฝ์์ ์๋์ง๋ง ์์ด๋์ด๋ฅผ ๊ณต์ํํ๊ณ ๋ค๋ฅธ ์ธ์ด ๊ธฐ๋ฅ๊ณผ ์ํธ ์์ฉํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๋ ์์ ์ ์ํํ๋ฉด ์ ์์ ๊ฐ์น๊ฐ ํฌ๊ฒ ์ฆ๊ฐํ ๊ฒ์ ๋๋ค.
@stinger @catamorphism ์ด๋ฆฐ ๋ง์์ ์ ์งํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! ์๊ฐ์ด ๋๋ฉด ์ ์์๋ฅผ ์์ฑํ์ฌ rust-dev์ ๋ณด๋ด๊ฒ ์ต๋๋ค.
์ด ๊ธฐ๋ฅ์ ๋ํด ํ ๋ก ํ๊ณ ์ด์ ๋ํ ๋ช ํํ ์ฌ์์ ์์ฑํ๊ธฐ ์ํด ํจ๋๋ฅผ ๋ง๋ค์์ต๋๋ค. https://pad.riseup.net/p/hvbg6dQQnEe7
๋ค์ ์ด๊ฒ ์ต๋๋ค. ์ฐ์ ์์๊ฐ ์๋๋๋ค. ์ด๋ฏธ ์ํํด์ผ ํ ์์ ์ด ๋๋ฌด ๋ง์ต๋๋ค. ํ์ง๋ง ์ฌ๋๋ค์ด ์ํ๋ ๊ธฐ๋ฅ์ด๋ฉฐ ์์ ํ ๋ฐฐ์ ๋ ๊ฒ์ ์๋๋๋ค. ๋๋ ๊ทธ ์ฃผ์ ์ ๊ดํ ์ด๋ค ๋ํ๋ ๋๊ณ ์ถ์ง ์์ต๋๋ค.
@brson ๊ฐ์ฌํฉ๋๋ค!
๋๋ etherpad์ ๋ํ ๋งํฌ์ ํจ๊ป ์๋ ๋ฌธ์ ๋ฅผ ํธ์งํ์ต๋๋ค.
์๋
.
ํจ๋ ์์ฑ ์ดํ๋ก ๋ง์ ๋์์ธ ์ ์, ์ง๋ฌธ, ๋ฌธ์ ๋ฑ์ผ๋ก ์์ฑ๋์์ต๋๋ค...
๊ทธ๋์ ํ ๋ก ํจ๋๋ฅผ "์์ฝ"ํ๊ธฐ ์ํด ๋ ๋ฒ์งธ ํจ๋๋ฅผ ๋ง๋ค์์ต๋๋ค. ์ด ํจ๋๋ ๊ธฐ๋ฅ ์์ฒญ์ ์ ํํ๊ฒ ์ค๋ช
ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
ํจ๋ URL: https://pad.riseup.net/p/Ca5PBeDjUGxW
@KokaKiwi ์ด์ ํจ๋๊ฐ ๋ค ๋น์์ต๋๋ค. ๋ด์ฉ์ ์ด๋๋ก ๊ฐ๋์?
@cmr , ๋๋ ์ถ์ธกํ๋ค:
๊ฒฝ๊ณ : ์ด ํจ๋๋ ํธ์ง ์์ด 30์ผ์ด ์ง๋๋ฉด ์ญ์ ๋ฉ๋๋ค. ์ด ์ผ์ด ๋ฐ์ํ ํ์๋ ํจ๋๋ฅผ ๋ณต๊ตฌํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ผ๋ฏ๋ก ์ฃผ์ํ์ญ์์ค!
:์ฐก๊ธ:
์ค์ ๋ก Mozilla Etherpad ์ธ์คํด์ค์์ ๋ง๋ ํจ๋๋ฅผ ๊ฒ์ํ๊ณ ์์ง๋ง(์ด ๊ฒฝ์ฐ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด) ๋ด ๊ธฐ๋ก์์ ์ฐพ์ ์ ์๊ณ ์ฌ๊ธฐ์ ๋งํฌ๋ฅผ ๊ฒ์ํ๋ ๊ฒ์ ์์์ต๋๋ค.(
@cmr @huonw @KokaKiwi , ์ฌ๊ธฐ ๋ด ๋ธ๋ผ์ฐ์ ๊ธฐ๋ก์ ์๋ ๋ ๊ฐ์ ๋งํฌ๊ฐ ์์ต๋๋ค.
https://etherpad.mozilla.org/CQEDa85jLX
https://etherpad.mozilla.org/78FA1bozLd
@dram ๋ด๊ฐ
์๋ก์ด ๋งํฌ๋ก ๋ฌธ์ ๋ฅผ ์์ ํด์ผ ํ ์๋ ์์ต๋๋ค.
(์์ ๋จ.)
์ธ์ด์ ๋ ๋ง์ ์๊ฐ์ ํฌ์ํ๊ธฐ ์ ์ ์ฃผ์ ๊น๊ฒ ๊ด์ฐฐํ๊ณ ์๋ ๊ฒ ์ค ํ๋๋ผ๋ ๊ฒ ์ธ์๋ ์ถ๊ฐํ ์๋ฏธ๊ฐ ์์ต๋๋ค. ์ด ๊ธฐ๋ฅ์ด ์๋ ์ธ์ด(Objective-C ๋ฐ Python)์์ ๋์จ ๋ช ๋ช ๋ ๋งค๊ฐ๋ณ์๋ ๋ค๋ฅธ ์ฌ๋๋ค์ ์ฝ๋๋ฅผ ๋ ์ฝ๊ธฐ ์ฝ๊ฒ ๋ง๋๋ ๋ฐฉ์ ๋๋ฌธ์ ์์ฐ์ฑ์ ๊ฐ์ ์ ์ผ๋ก ํฌ๊ฒ ํฅ์์ํฌ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๊ตฌ์ฒด์ ์ธ ์ ์์ ์๋ก์ด RFC ํ๋ก์ธ์ค๋ฅผ ํตํด ์ด๋ฃจ์ด์ ธ์ผ ํฉ๋๋ค: https://github.com/rust-lang/rfcs
์ ์ฉํ ํ ๋ก ์์ญ์ด ๋๊ธฐ์๋ ๋๋ฌด ๋ง์ ์์ถฉ๋๋ ์์ด๋์ด์ ๋ค์ํ ๋ํ ์ค๋ ๋๊ฐ ์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
Triage 2013-08-05: ์ง์ ์ด ์์(๋ด๊ฐ ์๊ณ ์์), ์ฌ์ ํ ๊น๋ํ์ง๋ง; ์๋ง๋ ์ ์ธ ๊ตฌ๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ ์ ์์ต๋๋ค.
์ฌ๊ธฐ์ RHS๋ ์์ expr์ ๋๋ค(์ฆ,
static
์ ์ธ์์ ์ ํจํ ๊ฒ).