Π£ ΠΌΠ΅Π½Ρ ΡΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄:
https://play.rust-lang.org/?gist=b8c78d5084a9b9ab7c53a2a9faa022af&version=stable&backtrace=0
ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ, # [test] ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ, Π½ΠΎ Π΅ΡΠ»ΠΈ Ρ ΠΏΠΎΠΏΡΡΠ°ΡΡΡ Π·Π°ΠΏΡΡΡΠΈΡΡ Π½Π° Π½Π΅ΠΌ Π³ΡΡΠ·ΠΎΠ²ΠΎΠΉ ΡΠ΅ΡΡ, Ρ ΠΏΠΎΠ»ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ Π² doc_test:
ΡΠ±ΠΎΠΈ:
---- vec :: <& 'ΠΠ΅ΠΊΡΠΎΡ
ΠΎΡΠΈΠ±ΠΊΠ°: ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΎΡΠ΅Π½ΠΊΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ <&_ as std::ops::Add<_>>::Output
[E0275]#![recursion_limit="128"]
Π² ΡΠ²ΠΎΠΉ ΡΡΠΈΠΊ
ΠΎΡΠΈΠ±ΠΊΠ°: ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅ ΠΈΠ·-Π·Π° ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΠΎΡΠΈΠ±ΠΊΠΈ
ΠΠΎΡ ΠΎΠΆΠ΅, ΠΊΠ°ΠΊΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΠΉΠ΄Π΅Ρ ΠΈΠ· ΡΡΡΠΎΡ, Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°. Π£ ΠΌΠ΅Π½Ρ ΡΠ»ΠΎΠΆΠΈΠ»ΠΎΡΡ Π²ΠΏΠ΅ΡΠ°ΡΠ»Π΅Π½ΠΈΠ΅, ΡΡΠΎ Π΄ΠΎΠΌΠ° ΠΎΠ±Π΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Add for & Vector Π½Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ, Π½ΠΎ Ρ ΠΌΠΎΠ³Ρ ΠΎΡΠΈΠ±Π°ΡΡΡΡ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Ρ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΊΠΎΠ³Π΄Π° Π²Π΅ΡΠ½ΡΡΡ Π΄ΠΎΠΌΠΎΠΉ.
ΠΡΠΎ Π²Π΅ΡΡΠΈΡ ΡΠΆΠ°Π²ΡΠΈΠ½Ρ, ΠΊΠΎΡΠΎΡΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π·Π΄Π΅ΡΡ:
rustc 1.10.0-dev (14f61c87f 18.04.2016)
Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ: rustc
ΠΊΠΎΠΌΠΌΠΈΡ-Ρ
Π΅Ρ: 14f61c87ff02e57d565d4fab4ce790156c9a596e
ΠΠ°ΡΠ° ΡΠΈΠΊΡΠ°ΡΠΈΠΈ: 2016-04-18
Ρ
ΠΎΡΡ: x86_64-unknown-linux-gnu
Π²ΡΠΏΡΡΠΊ: 1.10.0-dev
ΠΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π° ΡΠΎΡΡΠΌΠ°Ρ
ΠΏΠΎ ΡΠΆΠ°Π²ΡΠΈΠ½Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π·Π΄Π΅ΡΡ:
https://users.rust-lang.org/t/weird-problems-with-recursion-in-type-bounds-in-tests-on-libs/6101/4
update: Ρ ΠΎΡΠΈΠ±ΡΡ, Π΄ΠΎΠΌΠ° Ρ ΠΌΠ΅Π½Ρ ΡΠ°ΠΊΠΎΠ΅ ΠΆΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. ΠΠΎ, ΠΊΠ°ΠΊ ΡΠΊΠ°Π·Π°Π» @mbrubeck Π² ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠΈ Π½Π° ΡΠΎΡΡΠΌΠ΅, Π΅ΡΠ»ΠΈ Ρ ΡΠ΄Π°Π»Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ Π΄Π²Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ, Π²ΡΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ.
Π ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΡΡΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΡΡΠ° Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡΠΎΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄Π°Π΅Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅:
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
ΠΠ±ΡΠ΅ΠΉ ΡΠ΅ΡΡΠΎΠΉ Π²ΡΠ΅Ρ
ΡΡΠΈΡ
ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Ρ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ 2 ΡΡΠΎΠ²Π½Ρ Β«ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·Π°ΡΠΈΠΈΒ», Π±ΡΠ΄Ρ ΡΠΎ &
, Vector
ΠΈΠ»ΠΈ ΡΡΡΡΠΊΡΡΡΠ°-ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ°.
Π₯ΠΎΡΠΎΡΠ°Ρ ΠΈΠ΄Π΅Ρ ΡΠ±ΡΠ°ΡΡ ΠΏΠΎΠΆΠΈΠ·Π½Π΅Π½Π½ΡΡ ΡΡΡΡ. ΠΠ°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ½ΡΡΠ½Π΅Π΅.
ΠΡΠΌΠ°Ρ, ΠΌΡ ΠΎΠ±Π° ΡΠ΄Π΅Π»Π°Π»ΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ! ΠΠΎΠΈΠΌ Π±ΡΠ»ΠΎ ΡΠΎ, ΡΡΠΎ Β«Π³Π΄Π΅ Target: From <& 'm T>Β» Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±ΡΡΡ Β« where Target: for <' a> From <& 'a T> Β». Π― ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΡΠ·Π½Π°Π» ΠΎΠ± ΡΡΠΎΠΌ. ΠΠ°ΡΠ΅ ΠΌΠ½Π΅Π½ΠΈΠ΅, ΡΡΠΎ "(a.0) .0" Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ " C ((a.0) .0) ".
Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎΡΡ Π² ΠΎΠ±ΠΎΠΈΡ ΡΠ»ΡΡΠ°ΡΡ , Ρ.Π΅. ΠΎΠ½ΠΎ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΠΏΠΎΡ ΠΎΠΆΠ΅ Π½Π° ΠΎΡΠΈΠ±ΠΊΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°. Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΡΡΠΈ ΠΏΡΠΈΠΌΠ΅ΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ, Π½ΠΎ, ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π½Π΅ Π²ΡΠ΄Π°Π΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅.