Rust: 이쀑 쀑첩 μ»¨ν…Œμ΄λ„ˆ μœ ν˜•μ˜ μ˜€λ²„ν”Œλ‘œ

에 λ§Œλ“  2016λ…„ 06μ›” 07일  Β·  3μ½”λ©˜νŠΈ  Β·  좜처: rust-lang/rust

λ‹€μŒ μ½”λ“œκ°€ μžˆμŠ΅λ‹ˆλ‹€.

https://play.rust-lang.org/?gist=b8c78d5084a9b9ab7c53a2a9faa022af&version=stable&backtrace=0

λ³΄μ‹œλ‹€μ‹œν”Ό #[test]λŠ” 잘 μž‘λ™ν•˜μ§€λ§Œ ν™”λ¬Ό ν…ŒμŠ€νŠΈλ₯Ό μ‹€ν–‰ν•˜λ €κ³  ν•˜λ©΄ doc_testμ—μ„œ λ‹€μŒ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.

μ‹€νŒ¨:

---- vec::<&' 벑터>::add_0 ν‘œμ€€ 좜λ ₯ ----
였λ₯˜: <&_ as std::ops::Add<_>>::Output μš”κ΅¬ 사항을 ν‰κ°€ν•˜λŠ” μ˜€λ²„ν”Œλ‘œ [E0275]
:1:1: 1:1 μ°Έκ³ : μƒμžμ— #![recursion_limit="128"] 속성을 μΆ”κ°€ν•˜λŠ” 것을 κ³ λ €ν•˜μ‹­μ‹œμ˜€.
였λ₯˜: 이전 였λ₯˜λ‘œ 인해 쀑단

μ–΄λ–€ ν•¨μˆ˜κ°€ μ‹€νŒ¨ν• μ§€λŠ” μ»΄νŒŒμΌλŸ¬μ— 따라 λ‹€λ¦…λ‹ˆλ‹€. μ§‘μ—μ„œ Add for &Vector의 두 가지 κ΅¬ν˜„μ΄ λͺ¨λ‘ μ‹€νŒ¨ν•  κ²ƒμ΄λΌλŠ” 인상을 λ°›μ•˜μ§€λ§Œ λ‚΄κ°€ 잘λͺ» μ•Œκ³  집에 λ„μ°©ν•˜λ©΄ 이 문제λ₯Ό μ—…λ°μ΄νŠΈν•  κ²ƒμž…λ‹ˆλ‹€.

이것은 λ‚΄κ°€ μ—¬κΈ°μ—μ„œ μ‚¬μš©ν•˜λŠ” λ…Ή λ²„μ „μž…λ‹ˆλ‹€.

Rustc 1.10.0-dev (14f61c87f 2016-04-18)
λ°”μ΄λ„ˆλ¦¬: Rustc
컀밋 ν•΄μ‹œ: 14f61c87ff02e57d565d4fab4ce790156c9a596e
컀밋 λ‚ μ§œ: 2016-04-18
호슀트: x86_64-unknown-linux-gnu
릴리슀: 1.10.0-dev

Rust ν¬λŸΌμ— λŒ€ν•œ 토둠은 μ—¬κΈ°μ—μ„œ 찾을 수 μžˆμŠ΅λ‹ˆλ‹€.
https://users.rust-lang.org/t/weird-problems-with-recursion-in-type-bounds-in-tests-on-libs/6101/4

μ—…λ°μ΄νŠΈ : λ‚΄κ°€ μ°©κ°ν–ˆμŠ΅λ‹ˆλ‹€. μ§‘μ—μ„œ 같은 ν–‰λ™μ„ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ @mbrubeck 이 포럼 ν† λ‘ μ—μ„œ λ§ν–ˆλ“―μ΄ λ§ˆμ§€λ§‰ 두 개의 Add implsλ₯Ό μ œκ±°ν•˜λ©΄ λͺ¨λ“  것이 μž‘λ™ν•©λ‹ˆλ‹€.

A-typesystem C-bug T-compiler

λͺ¨λ“  3 λŒ“κΈ€

μœ μš©ν•œ 경우 이 훨씬 더 짧은 ν”„λ‘œκ·Έλž¨μ€ μœ μ‚¬ν•œ λ™μž‘μ„ μ œκ³΅ν•©λ‹ˆλ‹€.
https://play.rust-lang.org/?gist=2f793999729aec2cd8274157f7012e5d&version=stable&backtrace=0

잘 컴파일되고 μ‹€ν–‰λ˜λŠ” 이 버전을 λΉ„κ΅ν•˜μ‹­μ‹œμ˜€.
https://play.rust-lang.org/?gist=6ff433c8cc94c22985180210cc3a8e7d&version=stable&backtrace=0

λ‹€μŒμ€ @apt1002 의 ν”„λ‘œκ·Έλž¨μ„ μΆ”κ°€λ‘œ μ΅œμ†Œν™”ν•œ κ²ƒμž…λ‹ˆλ‹€.

https://play.rust-lang.org/?gist=0a77e1bd0f8e539d8a85ee30ed63b1f6&version=stable&backtrace=0

이 λͺ¨λ“  μ‹€νŒ¨ν•œ ν”„λ‘œκ·Έλž¨μ— λŒ€ν•œ 곡톡 μŠ€λ ˆλ“œλŠ” & , Vector λ˜λŠ” 래퍼 ꡬ쑰에 상관없이 "μ»¨ν…Œμ΄λ„ˆν™”"의 2개 계측이 μžˆλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

평생 말도 μ•ˆλ˜λŠ” μ†Œλ¦¬λ₯Ό μ œκ±°ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€. 훨씬 더 λͺ…ν™•ν•©λ‹ˆλ‹€.

우리 λ‘˜ λ‹€ μ‹€μˆ˜λ₯Ό ν•œ 것 κ°™μ•„μš”! λ‚΄ 것은 "where Target: From<&'m T>"κ°€ " where Target: for<'a> From<&'a T> "μ—¬μ•Ό ν•œλ‹€λŠ” κ²ƒμ΄μ—ˆμŠ΅λ‹ˆλ‹€. 방금 이것에 λŒ€ν•΄ λ°°μ› μŠ΅λ‹ˆλ‹€. "(a.0).0"은 " C((a.0).0) "이어야 ν•©λ‹ˆλ‹€.

였λ₯˜ λ©”μ‹œμ§€λŠ” 두 경우 λͺ¨λ‘ λ³€κ²½λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 즉, μ—¬μ „νžˆ 컴파일러 λ²„κ·Έμ²˜λŸΌ λ³΄μž…λ‹ˆλ‹€. 이 μ˜ˆμ œκ°€ μž‘λ™ν•΄μ•Ό ν•œλ‹€κ³  μƒκ°ν•˜μ§€λ§Œ μ΅œμ†Œν•œ μ»΄νŒŒμΌλŸ¬λŠ” μ˜¬λ°”λ₯Έ 였λ₯˜ λ©”μ‹œμ§€λ₯Ό μ œκ³΅ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰