Rust: RFC 2126 рдХреЗ рд▓рд┐рдП рдЯреНрд░реИрдХрд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛: рдкрде рдФрд░ рджреГрд╢реНрдпрддрд╛ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдФрд░ рд╕реБрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 17 рд╕рд┐рддре░ 2017  ┬╖  120рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: rust-lang/rust

рдпрд╣ RFC рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреНрд░реИрдХрд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛ рд╣реИ "рдкрде рдФрд░ рджреГрд╢реНрдпрддрд╛ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдФрд░ рд╕реБрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░реЗрдВ" (рд░рд╕реНрдЯ-рд▓реИрдВрдЧ/rfcs#2126)ред

рдХрджрдо:

  • [ ] рдЖрд░рдПрдлрд╕реА рд▓рд╛рдЧреВ рдХрд░реЗрдВред рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЪрд░рдгреЛрдВ рдХреЛ рдЙрдк-рдореБрджреНрджреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдпрд╛ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╣реЛрдЧрд╛)ред
  • [ ] crate рдХреЛ рдкреВрд░реНрдг рдкрде рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдкрд░ рдХреБрдЫ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореБрджреНрджреЛрдВ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЬрдм рддрдХ рд╣рдо рдЙрд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддрдм рддрдХ рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдЖрдЗрдЯрдо рдкреНрд░рднрд╛рд╡реА рдирд╣реАрдВ рд╣реЛрдЧрд╛:

    • [x] рдирд┐рд░рдкреЗрдХреНрд╖ рдкрдереЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдЯ рдЬреЛрдбрд╝реЗрдВ рдЬреЛ crate рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ (https://github.com/rust-lang/rust/issues/48722)

    • [ ] рдлреАрдЪрд░ рдЧреЗрдЯ рджрд┐рдП рдЬрд╛рдиреЗ рдкрд░ extern crate рдЦрддреНрдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ


  • [ ] рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░реЗрдВ ( рдлреЛрд░реНрдЬ рдкрд░ рдирд┐рд░реНрджреЗрд╢ рджреЗрдЦреЗрдВ )
  • [ ] рд╕реНрдерд┐рд░реАрдХрд░рдг рдкреАрдЖрд░ ( рдлреЛрд░реНрдЬ рдкрд░ рдирд┐рд░реНрджреЗрд╢ рджреЗрдЦреЗрдВ )

рдЕрдирд╕реБрд▓рдЭреЗ рдкреНрд░рд╢реНрди:

  • рд╣рдореЗрдВ рдкреНрд░рд╡рд╛рд╕ рдХреЗ рдкреНрд░рддрд┐ рдХреИрд╕реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП? рдлреЙрд▓рдмреИрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдЬреИрд╕рд╛ рдХрд┐ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╣реИ, рдпрд╛ рдпреБрдЧреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ? рдЕрдзрд┐рдХ рдЕрдиреБрднрд╡ рдХреЗ рд╕рд╛рде рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдирд╛ рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ rustfix рдЯреВрд▓ рд╣рд╛рде рдореЗрдВ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рджред

  • рдирд┐рд░рдкреЗрдХреНрд╖ рдкрде рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рд╡рд╛рдХреНрдп рд░рдЪрдирд╛; рдпрд╣рд╛рдБ рдПрдХ рд╕рдВрджрд░реНрдн рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдмрд╛рдЗрдХ рд╢реЗрдбрд┐рдВрдЧ рдХреА рдЬрд╛рдиреА рд╣реИ рдЬрд╣рд╛рдБ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдЖрдЬрд╝рдорд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рд╡рд╣рд╛рдБ рджреЛрдиреЛрдВ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд▓рд╛рдн рд╣реИрдВ crate:: рдФрд░ extern:: рдкрде, рд▓реЗрдХрд┐рди рдЖрджрд░реНрд╢ рд░реВрдк рдореЗрдВ рд╣рдо рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рддрд░реАрдХреЗ рд╕реЗ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

    • рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рд╣рдо рдХреЗрд╡рд▓ ::crate::foo рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рдо crate рдХреЛ рдПрдХ рджреГрд╢реНрдпрддрд╛ рд╕рдВрд╢реЛрдзрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирдиреЗ рдХреЗ рдмрдЬрд╛рдп struct Foo(crate ::foo) рдХреЛ рдПрдХ рдЕрд╡реИрдз рдкрде рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╣реИрдВред @petrochenkov рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдХреБрдЫ
B-RFC-approved C-tracking-issue E-needs-mentor T-lang WG-compiler-front

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдпрд╣рд╛рдВ рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдореИрдВрдиреЗ рдЕрднреА рднрд╛рдЧ рд▓рд┐рдпрд╛ рд╣реИ рдЬреЛ crate рдХреАрд╡рд░реНрдб рдХреЛ рдПрдХ рджреГрд╢реНрдпрддрд╛ рд╕рдВрд╢реЛрдзрдХ рдФрд░ рдкрде рджреЛрдиреЛрдВ рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЬреЛ crate use crate... рдЙрджрд╛рд╣рд░рдг рд╕реЗ рднреА рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред

рд╡рд░реНрддрдорд╛рди:

pub(crate) struct Bar {
    pub(crate) foo: ::Foo,
}

pub(crate) struct Baz(pub(crate) ::Foo);

рдЗрд╕ рдЯреНрд░реИрдХрд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд╕рд╛рде:

crate struct Bar {
    crate foo: crate::Foo,
}

crate struct Baz(crate crate::Foo);

рдореБрдЭреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдирдпрд╛ рддрд░реАрдХрд╛ рд╡рд░реНрддрдорд╛рди рддрд░реАрдХреЗ рд╕реЗ рдЕрдзрд┐рдХ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд▓рдЧрддрд╛ рд╣реИред

рд╕рднреА 120 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЙрд╕ RFC рдореЗрдВ 4 рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рднреА рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА рдЙрди рд╕рднреА рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдЯреНрд░реИрдХрд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛ рд╣реИред рдХреНрдпрд╛ рд╣рдо рдХреГрдкрдпрд╛ рдЗрд╕ рддрд░рд╣ рдХреА рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдПрдХ рд╕рд╛рде рдирд╣реАрдВ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ?

@ retep998 рдЬреИрд╕рд╛ рдХрд┐ RFC рдЪрд░реНрдЪрд╛ рдХреЗ рджреМрд░рд╛рди рд╕рдордЭрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпреЗ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рд╡реИрд╢реНрд╡рд┐рдХ рдбрд┐рдЬрд╝рд╛рдЗрди рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреБрдбрд╝реА рд╣реБрдИ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреНрд░реЗрдЯ рдХрд╛ рдирд╛рдо рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╛рд╣рд░реА рддрдВрддреНрд░ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ extern crate рдХреЗ рдЕрдВрддрдд: рдмрд╣рд┐рд╖реНрдХрд░рдг рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рд╣реИред рд╣рдо рдЗрдЪреНрдЫрд╛ рдЧреЗрдЯ рд╡рд┐рднрд┐рдиреНрди рдкрд╣рд▓реБрдУрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ (рдФрд░ рд╕рдВрднрд╛рд╡рдирд╛ рдЕрд▓рдЧ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдЖрдЬрд╝рдорд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЕрддрд┐рд╡реНрдпрд╛рдкреА рдлрд╛рдЯрдХреЛрдВ рд╣реЛрдЧрд╛), рд▓реЗрдХрд┐рди рд╕рдордЧреНрд░ рдбрд┐рдЬрд╛рдЗрди рдФрд░ рд╕реНрдерд┐рд░реАрдХрд░рдг рдкрд░ рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдзреНрдпрд╛рди рдореЗрдВ рд╡реИрд╢реНрд╡рд┐рдХ рдЬреБрдЯрдирд╛ рдмрдирд╛рдП рд░рдЦрдирд╛ рдЬрд╝рд░реВрд░реА рд╣реИред

рдмрдХреНрд╕реЗ рдХрд╛ рдирд╛рдо рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╛рд╣рд░реА рддрдВрддреНрд░ рд╣реЛрдирд╛ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд╛рдВрдЫрд┐рдд рд╣реИ рдФрд░ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (https://github.com/rust-lang/cargo/issues/1311) рдФрд░ рдЕрдХреЗрд▓реЗ рдЦрдбрд╝реЗ рд╣реЛ рд╕рдХрддреЗ рдереЗ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ extern crate рдХреЛ рдорд╛рд░рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдореЛрд╣рд░реЗ рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдХреБрдЫ рдирд╣реАрдВред

рд╣рдореЗрдВ рдЕрддреАрдд рдореЗрдВ рдмрд╛рд░реАрдХреА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ RFC рд░рдЦрдиреЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реБрдИ рд╣реИ ( repr(align(N)) рдФрд░ repr(packed(N)) рд▓рд┐рдП RFC рдХрд╛ рдзреНрдпрд╛рди рдЖрддрд╛ рд╣реИ), рдлрд┐рд░ рднреА рдЕрдм рд╣рдо рджрд╛рд╡рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ foo/mod.rs рдмрджрд▓рдирд╛ foo.rs рдХрд╛ extern:: рдФрд░ crate:: рд╕реЗ рдЗрддрдирд╛ рдЧрд╣рд░рд╛ рд╕рдВрдмрдВрдз рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╣реА RFC рдореЗрдВ рд░рд╣рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдПрдХ рд╣реА рдЯреНрд░реИрдХрд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛?

рдмрд╕ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рдмрд┐рдВрджреБ рдЪрд╛рд░реЛрдВ рдУрд░ рдЪрд┐рдкрдХ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдЕрдирд╕реБрд▓рдЭреЗ рдкреНрд░рд╢реНрди рдХрд╛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕реВрдХреНрд╖реНрдо рдкрд╣рд▓реВ рд╣реИ: crate рдХрд╛ рдЙрдкрдпреЛрдЧ рджреГрд╢реНрдпрддрд╛ рд╕рдВрд╢реЛрдзрдХ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдкрде рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд░реВрдк рдореЗрдВ crate ::absolute::path рдФрд░ рдХреЗ рдмреАрдЪ рдПрдХ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддрд╛ рд╣реИ crate::relative::path ред рдПрдХ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдорд╛рди рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддрд╛ рд╣реИ, рдФрд░ рдХреЛрдИ рдЕрдиреНрдп рдЖрд░рдХреНрд╖рд┐рдд рдХреАрд╡рд░реНрдб рдирд╣реАрдВ рд╣реИрдВ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджреГрд╢реНрдпрддрд╛ рд╕рдВрд╢реЛрдзрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдордЭ рдореЗрдВ рдЖрддреЗ рд╣реИрдВред

рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдореИрдВ crate рджреГрд╢реНрдпрддрд╛ рд╕рдВрд╢реЛрдзрдХ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдореМрдЬреВрджрд╛ pub(crate) рд╕рд╛рде рдЪрд┐рдкрдХреЗ рд░рд╣рдиреЗ рдХреЗ рд╕рд╛рде (рдХрдо рд╕реЗ рдХрдо) рдкреНрд░рдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдореБрдЭреЗ foo.rs / foo/mod.rs рдмрд┐рдВрджреБ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдЯреНрд░реИрдХрд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рдЖрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реЛрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрде рдФрд░ рджреГрд╢реНрдпрддрд╛ рд╕рдВрд╢реЛрдзрдХ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред

рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдмрд╛рд╣рд░реА рдХреНрд░реЗрдЯ рдХрд╛ рдирд╛рдо рдмрджрд▓рдиреЗ рдХреА рдмрд╛рдд рд╣реИ... рдЗрд╕рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рд╣реИ? рдкрде рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рдпрд╣ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рднреА рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛрдирд╛ рдареАрдХ рд╣реИ ред

рджреГрд╢реНрдпрддрд╛ рд╕рдВрд╢реЛрдзрдХ (рдкрде рдЙрдкрд╕рд░реНрдЧ рдирд╣реАрдВ) рдХреЗ рд░реВрдк рдореЗрдВ crate рдХреА рдкрд╕рдВрдж рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдХреБрдЫ рд╕рдкреНрддрд╛рд╣ рдкрд╣рд▓реЗ рдмрд╣реБрдд рд╕рд╛рд░реА рдЪрд░реНрдЪрд╛рдУрдВ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдореБрдЭреЗ рдпрд╣ рджреЗрдЦрдХрд░ рдирд┐рд░рд╛рд╢рд╛ рд╣реБрдИ рдХрд┐ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреАрд╡рд░реНрдб рдХреА рдЗрд╕ рдкрд╕рдВрдж рдХреЛ 'рдЕрдирд╕реБрд▓рдЭреЗ рдкреНрд░рд╢реНрди' рдХреЗ рд░реВрдк рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ RFC, рдЕрдм рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рднреБрд▓рд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореИрдВ рд╕реНрд╡рдпрдВ, рдФрд░ рдХрдИ рдЕрдиреНрдп рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВрдиреЗ рдиреЛрдЯ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЛ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд┐рд╢реЗрд╖рдг/рд╕рдВрд╢реЛрдзрдХ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЕрд╕реНрдкрд╖реНрдЯ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ: рдХреНрдпрд╛ crate рдорддрд▓рдм рдЯреЛрдХрд░рд╛ рдХреЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдкреАрдЖрдИ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ? рдирд╣реАрдВ! рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ local рдпрд╛ internal рдпрд╛ pub (рд▓рд┐рд╢реНрдб) рд╕реЗ рдЯреЛрдХрд░рд╛ (рдЗрд╕рд▓рд┐рдП рдореИрдВ рдмрд╛рдж рд╡рд╛рд▓реЗ рдХреАрд╡рд░реНрдб рдХреЛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ)ред рдЗрд╕рд▓рд┐рдП рдореИрдВ рддрддреНрдХрд╛рд▓ рдмрджрд▓рд╛рд╡ рдХреА рдорд╛рдВрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо рдЗрд╕реЗ рдЗрд╕ рдЯреНрд░реИрдХрд┐рдВрдЧ рдореБрджреНрджреЗ рдореЗрдВ рдПрдХ рдЕрдирд╕реБрд▓рдЭреЗ рдкреНрд░рд╢реНрди рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВ, рддрд╛рдХрд┐ рд╕реНрдерд┐рд░ рд╣реЛрдиреЗ рдкрд░ рдЗрд╕реЗ рднреБрд▓рд╛рдпрд╛ рди рдЬрд╛рдПред

рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореЙрдбреНрдпреВрд▓ рд░реАрдбрд┐рдЬрд╝рд╛рдЗрди рдЕрдм рддрдХ рдЖрдЧреЗ рдмрдврд╝ рдЪреБрдХрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╛рде рд╣реА рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╣рдо рдХреЗрд╡рд▓ 'рдЗрдореНрдкреНрд▓ рдЕрд╡рдзрд┐' рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдХреА рдЧрд▓рддреА рди рдХрд░реЗрдВ, рдФрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ рд░рд╕реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рд╕реЗ рдкрд░рд╛рдорд░реНрд╢ рдХрд┐рдП рдмрд┐рдирд╛ рдирд┐рд░реНрдгрдп рд▓реЗрдирд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрдВред рдФрд░, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬреАрдердм рдЖрд░рдПрдлрд╕реА рдЪрд░реНрдЪрд╛рдУрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд▓реЛрдЧ рдкреВрд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдзрд╛рд░ рдХреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдирд╣реАрдВ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╕реВрдЪрдирд╛/рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ/рд░рд╛рдп рдХреА рднрд╛рд░реА рдмрд╛рдврд╝ рдХреЗ рдХрд╛рд░рдг рд╣рддреЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рддреЛ рдХрд┐рд╕реА рддрд░рд╣ рдЗрд╕рд╕реЗ рднреА рдирд┐рдкрдЯрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред

рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреИрд╕реЗ рд╕рдорд╛рдкреНрдд рд╣реБрдЖ ...

@rpjohnst @ retep998 рдореИрдВрдиреЗ foo.rs + foo/ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЗрд╕ RFC рдореЗрдВ рдХреБрдЫ рд╕реБрдзрд╛рд░реЛрдВ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ RFC рдЦреЛрд▓рд╛

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рд╣рдо рджреГрд╢реНрдпрддрд╛ рд╕рдВрд╢реЛрдзрдХ рдХреЗ рд░реВрдк рдореЗрдВ crate рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ RFC рдЦреЛрд▓реЗрдВред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореИрдВ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ: pub(extern) рд╕рднреА рдмрд╛рд╣рд░реА рд░реВрдк рд╕реЗ рдкреНрд░рдХрд╛рд╢рд┐рдд рдкреНрд░рддреАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рд╛ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпрд╣ рдЕрдЧрд▓реЗ рдпреБрдЧ рдореЗрдВ рдирдВрдЧреЗ pub рдХреЛ pub(crate) рдХреЗ рдмрд░рд╛рдмрд░ рдмрдирд╛ рджреЗрдЧрд╛ред

@rpjohnst

рдЯреЛрдХрд░рд╛ :: рдкреВрд░реНрдг :: рдкрде рдФрд░ рдЯреЛрдХрд░рд╛ :: рд░рд┐рд╢реНрддреЗрджрд╛рд░ :: рдкрде рдХреЗ рдмреАрдЪ рдПрдХ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддрд╛ рд╣реИ

рд╡реИрд╕реЗ рднреА crate ::relative::path рдЕрдорд╛рдиреНрдп рдХреЛрдб рдирд╣реАрдВ рд╣реИ? рдХреНрдпрд╛ рдЗрд╕реЗ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдЦрд╛рд░рд┐рдЬ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?

@ est31 рдирд╣реАрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдирд╛рдо рд╕рдорд╛рдзрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдРрд╕рд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣ рд╕реА рдФрд░ рд╕реА ++ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рдЕрдзрд┐рдХ рдХрд╖реНрдЯрдкреНрд░рдж рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕рдорд╛рди рдЕрд╕реНрдкрд╖реНрдЯрддрд╛рдПрдВ a * b рдЧреБрдгрди рдпрд╛ рдШреЛрд╖рдгрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реЛрддреА рд╣реИрдВ, рдФрд░ рд▓рдЧрднрдЧ a b(c, d); рдПрдХ рдЪрд░ рдШреЛрд╖рдгрд╛ рдпрд╛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╣реЛрдиреЗ рдХреЗ рдирд╛рддреЗред

рдпрджрд┐ рд╣рдо рдХрднреА рднреА рдПрдХ рд╣реА рдирд╛рдо рдХреЗ рд╕рд╛рде рдирд┐рд░реНрднрд░рддрд╛ рдФрд░ рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдореЙрдбреНрдпреВрд▓ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдирд╛рдо рд╕рдорд╛рдзрд╛рди рдХреЛ рдЙрд▓рдЭрд╛рдиреЗ рд╕реЗ рднреА рд╣рдореЗрдВ рдХреЛрдИ рдмрдЪрдд рдирд╣реАрдВ рд╣реЛрдЧреА- crate :: some :: item рдПрдХ crate -рджреГрд╢реНрдпрдорд╛рди item рдирд┐рд░реНрднрд░рддрд╛ рд╕реЗ some , рдпрд╛ рдПрдХ рдирд┐рдЬреА item рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдореЙрдбреНрдпреВрд▓ some ред

рдЗрд╕реЗ рдкрд░рд┐рдкреНрд░реЗрдХреНрд╖реНрдп рдореЗрдВ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЛ рдПрдХ рдпрд╛ рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреВрд╕рд░реЗ рдорд╛рдорд▓реЗ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрд╖реНрдардХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рд╢рд╛рдпрдж crate -рджреГрд╢реНрдпрддрд╛ рдкреВрд░реНрдг рдкрде рдорд╛рдорд▓рд╛, рдЬреЛ рджреБрд░реНрд▓рдн рд▓рдЧрддрд╛ рд╣реИ), рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рдПрдХ рд╣реИ рдЕрдЧрд░ рд╣рдо pub(crate) рдЪрд┐рдкрдХреЗ рд░рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд╛рдХреНрдпрд╛рддреНрдордХ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЛ рд╣рд▓ рдХрд░ рдЪреБрдХрд╛ рд╣реИред

рджреГрд╢реНрдпрддрд╛ рд╕рдВрд╢реЛрдзрдХ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдкрде рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдХреНрд░реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ crate ::absolute::path рдФрд░ crate::relative::path рдмреАрдЪ рдПрдХ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддрд╛ рд╣реИред

рдпрд╣ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдореБрджреНрджрд╛ рд╣реИ, рдЖрдИрдПрдордУ, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдЯреБрдкрд▓ рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдлрд╝реАрд▓реНрдб рдФрд░ "рдЗрдирд▓рд╛рдЗрди" рдкреВрд░реНрдг рдкрде рджреЛрдиреЛрдВ рджреГрд╢реНрдпрддрд╛ рджреБрд░реНрд▓рдн рд╣реИрдВред
рдкрдереЛрдВ рдХреЛ рд╣рдореЗрд╢рд╛ рд▓рд╛рд▓рдЪ рд╕реЗ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ crate :: x :: y рдХрд╛ рдЕрд░реНрде crate::x::y рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред
рдпрджрд┐ рд╡рд┐рдкрд░реАрдд рдЕрд░реНрде рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рддреЛ pub(crate) ::x::y рдпрд╛ crate (::x::y) рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

@rpjohnst @petrochenkov рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдПрдХ рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ pub ::relative::path рд╡реИрдз рдХреЛрдб рд╣реИ? рдореБрдЭреЗ рдкреВрд░реА рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдирд╣реАрдВ рдорд┐рд▓рддреА рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рджреЛ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЕрдорд╛рдиреНрдп рд╣реИред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдПрдХрдорд╛рддреНрд░ рд╕реНрдерд╛рди рдЬрд╣рд╛рдВ рдпрд╣ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдореИрдХреНрд░реЛрдЬрд╝ рдХреЗ рдЕрдВрджрд░ рд╣реИ рдЬрдм рдЖрдк рджреГрд╢реНрдпрддрд╛ рдХреНрд╡рд╛рд▓реАрдлрд╛рдпрд░ + рдкрде рдХреЗ рд▓рд┐рдП рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдмрд╣реБрдд рдЫреЛрдЯрд╛ рдЯреВрдЯрдирд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рд╕реНрд╡реАрдХрд╛рд░реНрдп рдЖрдИрдПрдордУред

@ est31 рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЧрд▓рдд рд╡рд┐рдЪрд╛рд░ рд╣реИ- рдпрд╣ рд╕рд╛рдкреЗрдХреНрд╖ рдкрдереЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рд╡реЗ рдХрднреА рднреА рдХреЛрдИ рдореБрджреНрджрд╛ рдирд╣реАрдВ рд╣реИрдВред рдпрд╣ рдПрдПрд╕рдЯреА рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХреЛрдИ рднреА рдирд╛рдо рдХреНрдпрд╛ рд╣реИред рдпрд╣рд╛рдБ рдПрдХ рдкреВрд░реНрдг рдирдореВрдирд╛ рд╣реИ:

struct S(crate :: x :: y);

рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдЖрдкрдХреЛ рдЕрднреА рддрдХ рдЗрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рднреА рдирд╛рдо рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИ, рдЖрдк рд╡рд░реНрдгреЛрдВ рдХреА рдЙрд╕ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдПрдПрд╕рдЯреА рдореЗрдВ рдХреИрд╕реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реИрдВ? рджреЛ рд╕рдВрднрд╛рд╡рд┐рдд рдЙрддреНрддрд░ рд╣реИрдВред рдПрдХ рдХреЗ рдкрд╛рд╕ рд╡рд░реНрддрдорд╛рди рдЯреЛрдХрд░рд╛ рдХреЗ рдореЙрдбреНрдпреВрд▓ x рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд y рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдирд┐рдЬреА рдХреНрд╖реЗрддреНрд░ рд╣реИред рджреВрд╕рд░реЗ рдХреЗ рдкрд╛рд╕ crate рд╣реИ - рдПрдХ рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ рдХрд╛ рджреГрд╢реНрдпрдорд╛рди рдХреНрд╖реЗрддреНрд░ y рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдкрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд x ред рдХреЛрдИ рдореИрдХреНрд░реЛрдЬрд╝ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

@rpjohnst рдореИрдВ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж

@rpjohnst

рдПрдХ рд╕рд░рд▓ рдЙрдкрд╛рдп рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЯреЛрдХрд░рд╛ рджреГрд╢реНрдпрддрд╛ рд╕рдВрд╢реЛрдзрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рджрд┐рдП рдЧрдП рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд┐рдЬреА рд╕рджрд╕реНрдп рдХреЗ рд╕рд╛рде рдЯреБрдкрд▓ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рдХрд░реЗрдВ:

    struct S(:: crate :: x :: y);

(рдореВрд▓ 'рдиреЗрдорд╕реНрдкреЗрд╕' рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП :: рдЙрдкрд╕рд░реНрдЧ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ)

рдпрд╣ рд╕рдмрдореЙрдбреНрдпреВрд▓ (рдЬреИрд╕реЗ ::std::x::y ) рдореЗрдВ рдЕрдиреНрдп рд░реВрдЯ рдиреЗрдорд╕реНрдкреЗрд╕ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрд╕ crate -as-a-visibility рдХреЛ рдЕрд╕рдВрдмрджреНрдз рдХрд░рдирд╛ рдХреБрдЫ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ "рдХреИрдиреЛрдирд┐рдХрд▓рд╛рдЗрдЬрд╝" рдХрд┐рдпрд╛ рдЬрд╛рдП рдЬреЛ рдереЛрдбрд╝рд╛ рд╕рд╛ рдХрд╛рдо рдХрд░реЗ рдФрд░ рд▓рд╛рдЧреВ рдХрд░реЗ рдХрд┐ crate:: рд╣рдореЗрд╢рд╛ рдПрдХ рдЕрдЧреНрд░рдгреА :: ( use s рдХреЗ рдмрд╛рд╣рд░) рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ ::std::x::y -рд╕рдорд╛рди рдкрдереЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд░реВрдкрддрд╛ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИ, рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд╛рдкреЗрдХреНрд╖ рдкрдереЛрдВ рдХреЗ рд▓рд┐рдП рдЕрди-рдкреНрд░реАрдлрд┐рдХреНрд╕реНрдб рдлреЙрд░реНрдо рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ ( self:: / super:: / something_in_scope:: )ред

рдХреНрдпрд╛ рд╣рдореЗрдВ рдРрд╕рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? crate::x::y рдХреЛ рдЧреИрд░- use рд░рд╛рд╕реНрддреЛрдВ рдореЗрдВ рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ crate::x::y crate рдХреЛ рдЬрд╛рджреБрдИ рдмрдирд╛рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ ::crate::x::y рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдпрд╣ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рдорд╛рди рд╕реНрддрд░ рддрдХ

@rpjohnst

рд▓рд╛рдЧреВ рдХрд░реЗрдВ рдХрд┐ crate:: рд╣рдореЗрд╢рд╛ рдПрдХ рдЕрдЧреНрд░рдгреА :: рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдкрд╛рдареНрдпрдХреНрд░рдо рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рд╣рд░)

рдпрд╣ рдЙрдЪрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХрдо рд╕реЗ рдХрдо рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП (рдХреБрдЫ рднреА рдмрд╛рдж рдореЗрдВ рдЗрд╕реЗ рдЖрд░рд╛рдо рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рдирд╣реАрдВ рд╣реИ)ред

рдореИрдВ use extern::bar::foo рдпрд╛ use crate::bar::foo рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдкреНрд░рд╢рдВрд╕рдХ рдирд╣реАрдВ рд╣реВрдВред рдмрд╣реБрдд рд╢реЛрд░-рд╢рд░рд╛рдмрд╛ рд▓рдЧрддрд╛ рд╣реИред рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝реА рдЪреАрдиреА рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ред рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП extern bar::foo рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВред

рдПрдХ рдФрд░ рдирд┐рд╣рд┐рдд рдирд┐рдпрдо рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ? рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрд╛рд╣рд░реА рдХреНрд░реЗрдЯ рдХреЛ рд░реВрдЯ рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВ рдЖрдпрд╛рдд рдХрд░реЗрдВ, рдПрдХ рдЕрдзрд┐рдХ рд╕рдВрдпреЛрдЧ рдкрде рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдмрдирд╛рдПрдВред (рдореИрдВ рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реВрдВ, рдХреГрдкрдпрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдореЗрд░рд╛ рд╡рд┐рдЪрд╛рд░ рдЬрд╛рдиреЗрдВ)

рдЬреИрд╕реЗ

  1. рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрд░рдЪрдирд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

рдПрд╕рдЖрд░рд╕реА
|--lib.rs
|--foo.rs
|--рдлреВ
|----|--bar.rs

  1. рдЖрдк Cargo.toml рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ
    [dependencies] serde = "3.0.0"

  2. рд╣рдо mod bar рдХреЛ mod foo рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдФрд░ mod foo рдХреЛ lib.rs рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ,

  3. рд╣рдо lib.rs рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди finlib рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, foo.rs рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди finfoo рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, bar.rs рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди finbar рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ

рдмрд╛рд╣рд░реА рдЯреЛрдХрд░реЗ рдХреЗ рджрд╛рдпрд░реЗ рдХреЛ рдЯреЛрдХрд░рд╛ рдореЗрдВ рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдХреЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдПрдВ, рдлрд┐рд░ рд╣рдо рдХрд╣реАрдВ рднреА рдЗрд╕ рддрд░рд╣ рдХреЛрдб рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред

рдкреВрд░реНрдг/рдпреЛрдЧреНрдп рдкрде рдХреЗ рд▓рд┐рдП

::serde::Deserialize
::serde::x::y
::finlib                            // not ::crate::finlib
::foo::finfoo                   // not ::crate::foo::finfoo
::foo::bar::finbar           // not ::crate::foo::bar::finbar

рд╕рд╛рдкреЗрдХреНрд╖ рдкрде рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦреЗрдВ

serde::Deserialize      // no need to write `use serde`
serde::x::y                   // no need to write `use serde`
finlib                          
foo::finfoo                  
bar::finbar       

рд╣рдо рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ serdefinlibfoo рдХреЛ рд╡рд░реНрддрдорд╛рди рдореЙрдб рд╕реНрдХреЛрдк рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВ, рдпрджрд┐ рд░реВрдЯ рдиреЗрдорд╕реНрдкреЗрд╕ рддрдХ, рд╕рдкрд░ рдореЛрдб рдореЗрдВ рд▓реБрдХрдЕрдк рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИред рдпрджрд┐ рдирд╛рдо рдХрд╛ рд╡рд┐рд░реЛрдз рд╣реИ, рддреЛ рд╣рдо рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдкреВрд░реНрдг рдкрде рд▓рд┐рдЦрддреЗ рд╣реИрдВред

рдирд╛рдо рджреЗрдЦрдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо foo.rs рдореЗрдВ self::bar::finbar рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореИрдВ рдЗрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкрд╣рд▓реЗ рдХреЗ рдзрд╛рдЧреЗ рдХреЛ рдирд╣реАрдВ рдвреВрдВрдв рдкрд╛ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд╕рдВрдХрд▓рдХ рдЙрд╕ рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рдерд╛ рдФрд░ рдЗрд╕рд╕реЗ рдирд╛рдо рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛрддреА рдереАрдВред IIRC @pcwalton рдпрд╛ @ arielb1 рд╢рд╛рдпрдж рдЕрдзрд┐рдХ рдЬрд╛рдирддреЗ рд╣реИрдВред

рдЗрд╕ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рд╕рдорд╛рдзрд╛рди рдХреНрд░реЗрдЯ-рд╕реНрдерд╛рдиреАрдп рджреГрд╢реНрдпрддрд╛ рд╕рдВрд╢реЛрдзрдХ (рдпрд╛рдиреА: pub(crate) рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди) рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, local , рдЬреИрд╕рд╛ рдХрд┐ рдкрд┐рдЫрд▓реА RFC рдЪрд░реНрдЪрд╛рдУрдВ рдореЗрдВ рдкрд╣рд▓реЗ рднреА рдХрдИ рдмрд╛рд░ рд╕реБрдЭрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдлрд┐рд░ struct S(local :: x :: y) struct S(crate :: x :: y) ред

рдпрд╣ рд╕рд┐рд░реНрдл <visibility> <absolute path> рдФрд░ <relative path starting with the new keyword> рдмреАрдЪ рдПрдХ рдФрд░ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдирдпрд╛ рдХреАрд╡рд░реНрдб рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

@rpjohnst рдЖрд╣ рдзрд┐рдХреНрдХрд╛рд░ рд╣реИ .. рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпреБрдЧреЛрдВ рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛? рдЙрджрд╛рд╣рд░рдг: рд╡рд░реНрддрдорд╛рди рдпреБрдЧ рдореЗрдВ рд╣рдо рдХреЗрд╡рд▓ pub(crate) , рдФрд░ рдлрд┐рд░, рдЕрдЧрд▓реЗ рдпреБрдЧ рдореЗрдВ, рдПрдХ рдирдпрд╛ рдЧреИрд░-рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдХреАрд╡рд░реНрдб рдкреЗрд╢ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЕрдзрд┐рдХ 'рдПрд░реНрдЧреЛрдиреЛрдорд┐рдХ' рд╣реИред

@ рдиреАрдпрди 64 рд╣рд╛рдБ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрд░рдПрдлрд╕реА рджреНрд╡рд╛рд░рд╛ рджрд╛рд╡рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдПрдХ рдирдП рдпреБрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рджрд╛рд╡рд╛ рдирд╣реАрдВ рд╣реИред

рдпрд╣ рдареАрдХ рд╣реИ- рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреЛрдИ рдХреЛрдб рдирд╣реАрдВ рд╣реИ рдЬреЛ crate рджреГрд╢реНрдпрддрд╛ рдпрд╛ crate:: рдкрдереЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЗрд╡рд▓ рдирдпрд╛ рдХреЛрдб рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрдЧрд╛ред рдЬрдм рддрдХ рд╣рдо рдХреЛрдИ рд╕рдВрдХрд▓реНрдк рдЪреБрдирддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕ рдкрд░ рдЯрд┐рдХреЗ рд░рд╣рддреЗ рд╣реИрдВ, рддрдм рддрдХ рд╕рдВрдЧрддрддрд╛ рдХреА рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред

рдПрдХ рдмрд╛рдд рдЬреЛ рдореЗрд░реЗ рд╕рд╛рде рд╣реБрдИ рд╣реИ, рдХреНрд╖рдорд╛ рдХреЗ рд╕рд╛рде рдЕрдЧрд░ рдЗрд╕реЗ рдХрд┐рд╕реА рдПрдХ рдЪрд░реНрдЪрд╛ рдореЗрдВ рдкрд╣рд▓реЗ рд▓рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдореБрдЭреЗ рдпрд╛рдж рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рдкрд┐рдЫрд▓реЗ рдЬреЛрдбрд╝реЗ рдореЗрдВ рджреЗрдЦрд╛ рдерд╛):

рдирд╡реАрдирддрдо рдкреНрд░рд╕реНрддрд╛рд╡ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ "рдЗрд╕ рдЯреЛрдХрд░реЗ рдореЗрдВ" рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП crate:: рд╣реИ рдФрд░ "рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ" рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП self:: рд╣реИред рдпрд╣ рдереЛрдбрд╝рд╛ рдЕрд╕рдВрдЧрдд рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдХрдо рд╕реНрдкрд╖реНрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ: рдПрдХ рдмрд╛рдд рдХреЗ рд▓рд┐рдП, рдЬрд╣рд╛рдВ self "рдпрд╣" рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ "рдпрд╣ рдХреНрдпрд╛ рд╣реИ ", рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЗрд╕ рддрдереНрдп рд╕реЗ рдХрд┐ рдПрдХ self:: рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ " рдпрд╣ рдореЙрдбреНрдпреВрд▓", рдХреЛрдИ рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ crate:: рдХрд╛ рдЕрд░реНрде " рдХреБрдЫ рдЕрдиреНрдп рдЯреЛрдХрд░рд╛" рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рднреНрд░рдо рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдзрд╛рдЧреЗ рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди self:: рдХреЛ mod:: рдкрдХреНрд╖ рдореЗрдВ рд╕рдорд╛рдкреНрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рддрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ crate:: рдХрд╛ рдЕрд░реНрде "рдирд┐рдХрдЯрддрдо рд╕рдВрд▓рдЧреНрди рдЯреЛрдХрд░рд╛ рдореЗрдВ" рдФрд░ mod:: рдХрд╛ рдЕрд░реНрде "рдирд┐рдХрдЯрддрдо рд╕рдВрд▓рдЧреНрди рдореЙрдбреНрдпреВрд▓ рдореЗрдВ" рд╣реЛрдЧрд╛, рдФрд░ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдФрд░ рд╕реБрд╕рдВрдЧрдд рд╣реЛрдЧрд╛ред рд╣рдо рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЙрд╕ рдореБрджреНрджреЗ рдХреЛ рднреА рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ fn рджрд╛рдпрд░реЗ рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдПрдХ рдпреЛрдЧреНрдп рддрд░реАрдХреЗ рд╕реЗ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, fn:: рдЙрдкрд╕рд░реНрдЧ рдХреЛ рдкреЗрд╢ рдХрд░рдХреЗ, рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ "рдирд┐рдХрдЯрддрдо рд╕рдВрд▓рдЧреНрди fn ". (рдореИрдВрдиреЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪрд╛ рд╣реИ рдХрд┐ рдЖрдЧреЗ рдЬрд╛рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдореЗрдВ trait:: рдпрд╛ impl:: рдЬреИрд╕реА рдЪреАрдЬрд╝реЗрдВ рднреА рд╣реИрдВред)

@glaebhoerl рдпрд╣ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдкреВрд░реНрдг рдкрде рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдкреЗрд╢ рдХрд░рдиреЗ рдФрд░ рдореМрдЬреВрджрд╛ рдХреЛ рдмрд╣рд┐рд╖реНрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдЖрдпрд╛ рд╣реВрдВред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреИрд╕рд╛ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдореИрдВ рдиреАрдЪреЗ рдПрдХ рд╕рдВрднрд╛рд╡рдирд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ (рдЬреЛ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдкрд╣рд▓реЗ рдлрд╝реНрд▓реЛрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)ред

рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдкрдереЛрдВ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡реНрдпрд╛рдХрд░рдг рдерд╛:

Path = AbsolutePath | RelativePath
AbsolutePath = 
    | `@` ID? 
    | `@` ID? `::` RelativePath
    | `self` :: RelativePath
    | `super` :: RelativePath
RelativePath = ID (`::` ID)*

рдЗрд╕ рд╡реНрдпрд╛рдХрд░рдг рдХреЗ рддрд╣рдд, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП @crate рд╕реЗ рд╢реБрд░реБрдЖрдд рдХрд░рдХреЗ рдЕрдиреНрдп рдХреНрд░реЗрдЯреЛрдВ рдХреА рдЪреАрдЬреЛрдВ рдХрд╛ рд╕рдВрджрд░реНрдн рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:

use <strong i="13">@std</strong>::collections::HashMap;

рдХреЛрдИ рд╕реНрдерд╛рдиреАрдп рдЯреЛрдХрд░рд╛ рдХреЛ рдХреЗрд╡рд▓ @ рд╕рд╛рде рд╕рдВрджрд░реНрднрд┐рдд рдХрд░реЗрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

use @::something::in::my::crate;

(рдФрд░ use self::something рдмреЗрд╣рддрд░ рдпрд╛ рдмрджрддрд░ рдХреЗ рд▓рд┐рдП рдЖрдЬ рдХреА рддрд░рд╣ рд╣реА рд░рд╣рддрд╛ рд╣реИред)

рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЕрдЪреНрдЫрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдкреВрд░реНрдг рдкрде рд╕рд╛рдкреЗрдХреНрд╖ рдкрде рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд╛рдВрдЫрдиреАрдп рд╕рдВрдкрддреНрддрд┐ рд╣реИ рдХрд┐ рдХреЛрдИ use рд╕реЗ рдХреЛрдб рдореЗрдВ рдкрде рдХреЛ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

fn foo() {
    <strong i="24">@std</strong>::cmp::min(a, b) // OK
}

рдпрд╣ рдЖрдЬ рд╕рдЪ рдирд╣реАрдВ рд╣реИ, рдЬреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рдордп-рд╕рдордп рдкрд░ рдореБрдЭреЗ рднреНрд░рдорд┐рдд рдХрд░рддрд╛ рд╣реИред

рд╣рдо crate рдЖрд╕рдкрд╛рд╕ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЛ рднреА рдЦрддреНрдо рдХрд░рддреЗ рд╣реИрдВ, рддрд╛рдХрд┐ рдЖрдк pub Foo(crate @::MyType) рдпрд╛ рдЬреЛ рдХреБрдЫ рднреА рдХрд░ рд╕рдХреЗрдВ рдФрд░ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

(рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕рд╛рдкреЗрдХреНрд╖ рдФрд░ рдирд┐рд░рдкреЗрдХреНрд╖ рдкрде рдПрдХ рд╣реА :: рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВ, рдХрдИ рдмрд╛рд░ рджрд░реНрдж рдХрд╛ рд╕реНрд░реЛрдд рд░рд╣рд╛ рд╣реИ, рдпрд╣ рд╕рдЪ рд╣реИред)

рдПрдХ рдмрд╛рдд рдЬреЛ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ @foo рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рд╣реИ рд╡рд╣ рд╣реИ [] :

  • [std]::collections рдФрд░ [crate]::collections // []::collections рдмрд╣реБрдд рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИред

рдореБрдЭреЗ рд╕рдЪ рдореЗрдВ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдореЗрдВ рд╕рд┐рд░реНрдл рд░рд╛рд╕реНрддреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдирдпрд╛ рд╕рд┐рдЧрд┐рд▓ рдкреЗрд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред :: рдХреЛ ::crate::foo рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдирд╛ @glaebhoerl рдХреА рдЯрд┐рдкреНрдкрдгреА рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдФрд░ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЛ рдЦрддреНрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдпрд╣ crate:: рд▓рд┐рдП рдЗрдЪреНрдЫрд┐рдд рдорд╛рдирд╕рд┐рдХ рдореЙрдбрд▓ рдХреЛ рднреА рдЕрдзрд┐рдХ рдмрд╛рд░реАрдХреА рд╕реЗ рдлрд┐рдЯ рдХрд░рддрд╛ рд╣реИ- рдпрд╣ рд╡рд░реНрддрдорд╛рди рдХреНрд░реЗрдЯ рдХреЗ рдирд╛рдо рдХреЗ рд▓рд┐рдП рд╕реНрдЯреИрдВрдб-рдЗрди рд╣реИ, self:: рдЬреИрд╕реЗ рдкрде рдЙрдкрд╕рд░реНрдЧ рдирд╣реАрдВред

(рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕рд╛рдкреЗрдХреНрд╖ рдФрд░ рдирд┐рд░рдкреЗрдХреНрд╖ рдкрде рдПрдХ рд╣реА :: рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВ, рдХрдИ рдмрд╛рд░ рджрд░реНрдж рдХрд╛ рд╕реНрд░реЛрдд рд░рд╣рд╛ рд╣реИ, рдпрд╣ рд╕рдЪ рд╣реИред)

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдЗрд╕рд╕реЗ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдХреЛрдИ рднреА рд╕рд╛рдкреЗрдХреНрд╖ рдкрде :: , рд╣реИ рдирд╛?

@nikomatsakis @glaebhoerl рдЗрд╕ рдмрд╛рдд рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЖрдкрдХреЗ рд╕реБрдЭрд╛рд╡ рдкрд╕рдВрдж рд╣реИрдВ рдпрд╛ рдирд╣реАрдВ (рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджреЛрдиреЛрдВ рдХреЗ рд╕рд╛рде рд░рд╣ рд╕рдХрддрд╛ рд╣реВрдВ), рдХреНрдпрд╛ рд╣рдо рдХреГрдкрдпрд╛ RFC рд╕реЗ рдЪрд┐рдкрдХреЗ рд░рд╣ рд╕рдХрддреЗ рд╣реИрдВ? рдЗрд╕ рдкрд░ рдЖрдЧреЗ рдФрд░ рдкреАрдЫреЗ рдмрд╣реБрдд рддрд░рд╣ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИ рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдмрд╣рд╕ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдиреЗ рд╕реЗ рдХрд┐рд╕реА рдХреЛ рдорджрдж рдорд┐рд▓реЗрдЧреАред рдирд╡реАрдирддрдо RFC рдХреЗ рдереНрд░реЗрдб рдкрд░ рдХреБрд▓ 82 рд▓реЛрдЧреЛрдВ рдиреЗ рдЯрд┐рдкреНрдкрдгреА рдХреА рд╣реИ (рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХреБрдЫ рдЪрд░реНрдЪрд╛рдПрдБ рд╣реБрдИ рдереАрдВ), рдХрдИ рд▓реЛрдЧ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рджреГрдврд╝рддрд╛ рд╕реЗ рдорд╣рд╕реВрд╕ рдХрд░ рд░рд╣реЗ рдереЗред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рдЖрдЦрд┐рд░реА рдорд┐рдирдЯ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдмрджрд▓рд╛рд╡ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХрд╛ рдореМрдХрд╛ рджрд┐рдП рдмрд┐рдирд╛ рдЪреБрдкрдХреЗ рд╕реЗ рдЙрдирдХреЗ рд▓рд┐рдП рдЕрдиреБрдЪрд┐рдд рд╣реЛрдЧрд╛ред
рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдореИрдВ рдереЛрдбрд╝рд╛ рдЙрд▓рдЭрди рдореЗрдВ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ # 44721 рдореЗрдВ @nikomatsakis рдиреЗ рдЗрд╕ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд░реНрдЪрд╛

@ рд╕рдВрдХреЗрддрди рдФрд░ [] рд╕рдВрдХреЗрддрди рджреЛрдиреЛрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ (рдореЗрд░реЗ рд╕рд╛рде рджреЛрдиреЛрдВ рдХрд╛ рд╕рдорд░реНрдердХ рд╣реЛрдиреЗ рдХреЗ рдирд╛рддреЗ) рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрдВрддрддрдГ рдЗрд╕реЗ рдирд╣реАрдВ рдмрдирд╛рдпрд╛, рдХрдо рд╕реЗ рдХрдо рдпрд╣ рдореЗрд░реА рдзрд╛рд░рдгрд╛ рд╣реИ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рд╕реЗ рдирдХрд╛рд░рд╛рддреНрдордХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг .

рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЕрдЧрд░ рдРрд╕рд╛ рдХреЛрдИ рдорд╛рдорд▓рд╛ рдирд╣реАрдВ рд╣реИ рдЬрд╣рд╛рдВ рдПрдХ рдЕрдЧреНрд░рдгреА :: рдХреЛ рдЙрд╕ рдкрде рд╕реЗ рднреНрд░рдорд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдкрд┐рдЫрд▓реЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдЖрдВрддрд░рд┐рдХ :: , рддреЛ рдпрд╣ рджреГрд╖реНрдЯрд┐ рд╕реЗ рдмрд╣реБрдд рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдХрдо рд╡рд┐рдЪрд╛рд░реЛрддреНрддреЗрдЬрдХ рд╣реИред @ рдПрдХ рдмреЗрд╣рддрд░ рд╕реНрдорд░рдХ рд╣реИред рдПрдХ рдЕрдЧреНрд░рдгреА :: рдЖрдкрдХреЛ рдЖрд╢реНрдЪрд░реНрдп рд╣реЛрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдкрде рдХреА рддрд░рд╣ рд╣реИ, рдЬрд╣рд╛рдВ рдЕрдЧреНрд░рдгреА / рдЕрд░реНрде рд╣реИ рд░реВрдЯ (рдпрджрд┐ рдЖрдк рдпреВрдирд┐рдХреНрд╕ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд╣реИрдВ), рдпрд╛ рдпрджрд┐ рдпрд╣ рдПрдХ рдорд╛рдирдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд╛рдо рд╣реИ, рдЬрд╣рд╛рдВ рдХреЛрдИ рдЕрдЧреНрд░рдгреА рдирд╣реАрдВ рд╣реИ рдмрд╛рдд рдХрд╛ рдорддрд▓рдм рд╣реЛрдЧрд╛ "рд╣рдордиреЗ рдирд╛рдо рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд░рд┐рд╢реНрддреЗрджрд╛рд░ рд╣реИ"ред рдПрдХ рдкрд▓ рдХреЗ рд╡рд┐рдЪрд╛рд░ рд╕реЗ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкреВрд░реНрд╡ рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдкрд▓ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рд▓реЗрддрд╛ рд╣реИред @ (рдпрд╛ рдХреБрдЫ рдРрд╕реЗ) рд╕рдВрдХрд▓рдХ рдФрд░ рдХреЛрдбрд░ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рддреБрд░рдВрдд рдЕрд▓рдЧ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдпрд╣ рд╕рдордЭрдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред

рдПрдХ рдЕрдЧреНрд░рдгреА @ рдПрдХ рдЕрдЧреНрд░рдгреА :: рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдВрддрд░ рдХрд░рдирд╛ рдХреИрд╕реЗ рдЖрд╕рд╛рди рд╣реИ? :: рдкрд╣рд▓реЗ рд╕реЗ рд╣реА Rust рдФрд░ C++ рджреЛрдиреЛрдВ рдореЗрдВ рдПрдХ рд╕реНрдерд╛рдкрд┐рдд рддрдВрддреНрд░ рд╣реИ!

@rpjohnst - рдореИрдВрдиреЗ рдХрд╣рд╛ рдХрд┐ рдЖрдк рдЬрд┐рд╕ рд╡рд╛рдХреНрдп рдореЗрдВ рдЬрд╡рд╛рдм рджреЗ рд░рд╣реЗ рд╣реИрдВ, @ рдиреЗрддреНрд░рд╣реАрди рдЕрд▓рдЧ рд╣реИред рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП: рдпрд╣ рдЖрдк рдкрд░ рдХреВрдж рдкрдбрд╝рддрд╛ рд╣реИред рдЯреЛрдХрди рд╕реНрдЯреНрд░реАрдо рдХреЗ рдЖрдкрдХреЗ рдорд╛рдирд╕рд┐рдХ рдореЙрдбрд▓ рдореЗрдВ рдЕрдЧреНрд░рдгреА рдмрдирд╛рдо рдЖрдВрддрд░рд┐рдХ рд╕реНрдерд┐рддрд┐ рдХреЗ рднреНрд░рдорд┐рдд рд╣реЛрдиреЗ рдХрд╛ рдХреЛрдИ рдЦрддрд░рд╛ рдирд╣реАрдВ рд╣реИред

@ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдпрд╛ рдЯреЛрдХрди рд╣реИ рдЬрд┐рд╕рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рдФрд░ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП "рдПрдХ рдкрд▓ рдХреЗ рд╡рд┐рдЪрд╛рд░" рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧреЗрдЧрд╛ред рдПрдХ рдЖрдВрддрд░рд┐рдХ :: :: рд▓рд┐рдП рдЕрдЧреНрд░рдгреА :: рдПрдХ рд╕рд╛рдкреЗрдХреНрд╖ рдкрде рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

@rpjohnst - :: рдЕрд░реНрде рд╣реИ (рдЬреЛ C++ рдпрд╛ Rust рдХреЗ рд╕рд╛рде рдЕрдиреБрднрд╡ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ) рдкрд░ рдкрд░реНрдпрд╛рдкреНрдд рдкреНрд░рд╢рд┐рдХреНрд╖рдг рджрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рдЖрдкрдХреЗ рдХрдерди рд╕рд╣реА рд╣реИрдВред рдореИрдВ рд╕реАрдЦрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдФрд░ рдЖрдВрддрд░рд┐рдХ рдЕрдВрддрд░ рдХреА рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рдерд╛ред "рдПрдХ рд╣реА рдкреНрд░рддреАрдХ рдПрдХ рдЕрд▓рдЧ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ" рдХрднреА рднреА "рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдкреНрд░рддреАрдХ" рдХреЗ рд░реВрдк рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдореИрдВ рдЗрд╕ рддрд░реНрдХ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдкреНрд░рддреАрдХ рдХреЗ рд░реВрдк рдореЗрдВ @ рдХреЛ рдЬрд▓рд╛рдиреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИ рдЬрд╣рд╛рдВ рдПрдХ рд╕рд╣рдиреАрдп рд╡рд┐рдХрд▓реНрдк рд╣реИред

@Ichoran : рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬрдВрдЧ рд╡реНрдпрд╛рдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╢рдмреНрджрд╛рд░реНрде ( @ ) рдХреЗ рд▓рд┐рдП рдирдпрд╛ рдЯреЛрдХрди рдЬреЛрдбрд╝рдирд╛ рд╣рд▓реНрдХреЗ рдореЗрдВ рд▓рд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдХрджрдо рдирд╣реАрдВ рд╣реИ, рдФрд░ рдореБрдЭреЗ рдереЛрдбрд╝рд╛ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рд╣рдо @nikomatsakis рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╣реБрдд рдХрд░реАрдм рд╣реИрдВ рдФрд░ рджреВрд╕рд░реЛрдВ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ред рдПрдХ рдХреЗ рд▓рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдмрд╛рдж рдореЗрдВ рднрд╛рд╖рд╛ рдХреЗ рдЬреАрд╡рди рдореЗрдВ рдХрд┐рд╕реА рдЕрдиреНрдп рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрде рдХреЛрдб рдореЗрдВ рдЗрддрдиреЗ рд╡реНрдпрд╛рдкрдХ рд╣реИрдВ рдХрд┐ @ рдЯреЛрдХрди рдХрдИ рдЬрдЧрд╣реЛрдВ рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ)ред рдореБрдЭреЗ рдпрд╣ рднреА рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рд░рд╕реНрдЯ рдХреЛрдб рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреА рдзрд╛рд░рдгрд╛ рдкрд░ рдХреНрдпрд╛ рдкреНрд░рднрд╛рд╡ рдкрдбрд╝рддрд╛ рд╣реИред рдПрдХ рдиреМрд╕рд┐рдЦрд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕реА ++ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ (рд▓реЗрдХрд┐рди рдЗрд╕ рдкрд░ рд╢реЛрдз рдирд╣реАрдВ рд╣реИ) рдЬрдВрдЧ рдПрдХ рдмрд╣реБрдд рд╣реА рдмрд╛рд░реЛрдХ, рдбрд░рд╛рд╡рдиреА рд╕рдВрдХреЗрддрди рд╡рд╛рд▓реА рднрд╛рд╖рд╛ рд╣реИред рдЗрд╕ рд╡рд░реНрд╖ рдХреЗ рд▓рд┐рдП рд░рдгрдиреАрддрд┐рдХ рд▓рдХреНрд╖реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╕реАрдЦрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рдирд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬрдВрдЧ рдХреА рд╕реНрд╡реАрдХрд╛рд░реНрдпрддрд╛ рд╣реИред рддреЛ рд╢рд╛рдпрдж рд╣рдореЗрдВ @ рдХрд▓реНрдкрдирд╛ рдХрд░рддреЗ рд╕рдордп рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЕрдВрддрд░реНрдЬреНрдЮрд╛рди рдпрд╣ рдХреЛрдб рдореЗрдВ рдЦрдбрд╝рд╛ рд╣реЛрдЧрд╛ (рдЬреЛ

(рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рджрд╛рд╡рд╛ рдХреА рдЧрдИ рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдХреЛ рд╕рд╣реА рдХрд░рдиреЗ рдпрд╛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рд░рд╕реНрдЯ рд╡реНрдпрд╛рдХрд░рдг рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд╛ рдЗрддрдирд╛ рдмрд╛рд░реАрдХреА рд╕реЗ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реИред)

@est31

рдЗрд╕ рдмрд╛рдд рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рдХрд┐ рдореБрдЭреЗ рдЖрдкрдХреЗ рд╕реБрдЭрд╛рд╡ рдкрд╕рдВрдж рд╣реИрдВ рдпрд╛ рдирд╣реАрдВ (рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджреЛрдиреЛрдВ рдХреЗ рд╕рд╛рде рд░рд╣ рд╕рдХрддрд╛ рд╣реВрдВ), рдХреНрдпрд╛ рд╣рдо рдХреГрдкрдпрд╛ рдЖрд░рдПрдлрд╕реА рдкрд░ рдЯрд┐рдХреЗ рд░рд╣ рд╕рдХрддреЗ рд╣реИрдВ?

рдореВрд▓ рд░реВрдк рд╕реЗ рдореИрдВ рд╕рд╣рдордд рд╣реВрдВред рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрднреА рдмрдбрд╝реА рдЪрд░реНрдЪрд╛рдУрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ - рдпрд╣ рдЕрдВрдд рдЕрд╡рдзрд┐ рд╣реИ! -- рд▓реЗрдХрд┐рди рдореИрдВ @ рд╡рд┐рдЪрд╛рд░ "рд╡рд╣рд╛рдВ рд╕реЗ рдмрд╛рд╣рд░" рдХреЛ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рд╕рд┐рдордЯрдиреЗ рдХреЗ рд▓рд┐рдП рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдХреБрдЫ рд╣рдж рддрдХ, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рднреВрд▓рдиреЗ рдХреА рдЖрджрдд рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдФрд░ рдЪреАрдЬреЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рд╕реЗ рдореБрдЭреЗ рдмрд╛рдж рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдпрд╛рдж рд░рдЦрдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓рддреА рд╣реИред

рдореЗрд░реА рднрд╛рд╡рдирд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рд╕рдордп рд╕рд╣реА рдХрд╛рдо рдХрд░рдирд╛ рд╣реИ:

  • рдЖрд░рдПрдлрд╕реА рдХреЛ рдореЛрдЯреЗ рддреМрд░ рдкрд░ рд▓рд┐рдЦрд┐рдд рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдирд╛ред

    • рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдирд┐рд░рдкреЗрдХреНрд╖ рдкрдереЛрдВ рдХреЗ рд▓рд┐рдП @rpjohnst рдХреЗ ::crate рд╕реБрдЭрд╛рд╡ рдХреЛ рдЕрдкрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдмрд╣реБрдд рдЫреЛрдЯрд╛ рдбреЗрд▓реНрдЯрд╛ рд▓рдЧрддрд╛ рд╣реИ, рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдордЧреНрд░рддрд╛ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИред

  • рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрднрд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
  • рдЗрд╕ рдмреАрдЪ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рдбрд┐рдЬрд╝рд╛рдЗрди рдкрд░ рджреЛрдмрд╛рд░рд╛ рдЧреМрд░ рдХрд░реЗрдВ рдФрд░ рд╕реНрдерд┐рд░реАрдХрд░рдг рдХреЗ рдЕрдВрддрд┐рдо рдирд┐рд░реНрдгрдп рд▓реЗрдВред

рдпрд╣ рд╡рд╣ рднрд╛рд╡рдирд╛ рдереА рдЬрд┐рд╕рдореЗрдВ рдореБрдЭреЗ рдЕрдкрдиреА рдЯрд┐рдкреНрдкрдгреА рд▓рд┐рдЦрдиреЗ рдХрд╛ рдорддрд▓рдм рдерд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рд╢рд╛рдпрдж рдЗрд╕реЗ рдкреНрд░рд╛рдЗрд╡реЗрдЯ рдлрд╛рдЗрд▓ рдореЗрдВ рд╣реА рд░рдЦрдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ред :рдорд╣рд┐рд▓рд╛_рд╢реНрд░рдЧрд┐рдВрдЧ:

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рд╕рд╛рде рд╣реА, рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ @ рдФрд░ [] рдкрд╣рд▓реЗ рдЙрдард╛рдП рдЧрдП рдереЗ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдпрд╛рдж рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП @::foo рдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдкрд╣рд▓реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдпрд╛ рдирд╣реАрдВ рдЯреЛрдХрд░рд╛ред рддреЛ рдореЗрд░рд╛ рдорддрд▓рдм рд╡рд┐рдЪрд╛рд░ рдХреЗ рд▓реЗрдЦрдХрддреНрд╡ рдХрд╛ рджрд╛рд╡рд╛ рдХрд░рдиреЗ рдХрд╛ рдирд╣реАрдВ рд╣реИред

рдУрдЯреАрдУрдПрдЪ, рдЬрд┐рд╕ рд╡рд┐рдЪрд╛рд░ рдХрд╛ рдореИрдВрдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ рд╡рд╣ рдкрд╣рд▓реЗ рдирд╣реАрдВ рдЙрдард╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдЖрд░рдПрдлрд╕реА рдореЗрдВ рдЗрддрдирд╛ рд╕рдВрд╢реЛрдзрди рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рдХрд┐ рдЗрд╕рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, "рдкреВрд░реНрдг рдкрде рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕; рдпрд╣рд╛рдВ рдПрдХ рд╕рдВрджрд░реНрдн рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдмрд╛рдЗрдХрд┐рдВрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдЖрдЬрдорд╛ рд╕рдХрддреЗ рд╣реИрдВред" рдирд┐рд░реНрдЧрдо рдирд┐рдХрд╛рдп рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рдЕрдирд╕реБрд▓рдЭреЗ рдкреНрд░рд╢реНрди рдХреЗ рд░реВрдк рдореЗрдВ

рдпрд╣ рдЪрд░реНрдЪрд╛ рд╕реВрддреНрд░ рднреА рджреЗрдЦреЗрдВ:

https://internals.rust-lang.org/t/the-great-module-adventure-continues/6678

рдЧреНрд░реЗрдЯ рдореЙрдбреНрдпреВрд▓ рдПрдбрд╡реЗрдВрдЪрд░ рдХреЗ рдПрдХ рдФрд░ рдПрдкрд┐рд╕реЛрдб рдореЗрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ! рдЬрдм рд╣рдо рдЖрдЦрд┐рд░реА рдмрд╛рд░ рдорд┐рд▓реЗ рдереЗ, рддреЛ рд╣рдорд╛рд░реЗ рдмрд╣рд╛рджреБрд░ рд╕рд╛рд╣рд╕реА рд▓реЛрдЧ рдЖрд░рдПрдлрд╕реА #2126 рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдХреЗ, рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдХрд▓реНрдкрд┐рдд рднреВрдорд┐ рдкрд░ рдЖрдП рдереЗред рд╡рд╣рд╛рдВ рдЙрдиреНрд╣реЛрдВрдиреЗ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╢реНрд░рд╛рдо рд▓рд┐рдпрд╛, рдФрд░ рдЗрдореНрдкреНрд▓реА рдкреАрд░рд┐рдпрдб рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛ рдЧрдПред рдЙрд╕ рдЕрд╡рдзрд┐ рдореЗрдВ, рдмрд╣реБрдд рдХрд╛рдо рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдкреНрд░рдгрд╛рд▓реА рдХреА рд░реВрдкрд░реЗрдЦрд╛ рд▓рд╛рдЧреВ рдХреА рдЧрдИ рдереАред рд▓реЗрдХрд┐рди рдЕрднреА рднреА рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЫреЛрдЯреЗ рдкреНрд░рд╢реНрди рдереЗ ... рдФрд░ рдпрд╣ рд╣рдореЗрдВ рдЗрд╕ рдЪрд░реНрдЪрд╛ рд╕реВрддреНрд░ рдореЗрдВ рд▓рд╛рддрд╛ рд╣реИред

рдХрдо рдлреВрд▓ рд╡рд╛рд▓реА рднрд╛рд╖рд╛ рдореЗрдВ: рдирд┐рд╣рд┐рдд рдЕрд╡рдзрд┐ рдХреЗ рджреМрд░рд╛рди, рд╣рдордиреЗ "рд╕реНрдкрд╖реНрдЯ рдФрд░ рд╕реБрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдкрде рдФрд░ рджреГрд╢реНрдпрддрд╛" рдЖрд░рдПрдлрд╕реА (рдХрдИ рд╕рдВрдмрдВрдзрд┐рдд рдЖрд░рдПрдлрд╕реА рдХреЗ рд╕рд╛рде) рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рдкреНрд░рдЧрддрд┐ рдХреА рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдордиреЗ рд▓рдЧрднрдЧ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкреНрд░рдЧрддрд┐ рдХреА рд╣реИ - рд╣рдордиреЗ рдХреБрдЫ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░реВрдкреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд░реНрдЪрд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдореИрдВ рдХрд┐рд╕реА рджрд┐рди рдЗрд╕ рдЙрддреНрдХреГрд╖реНрдЯ рдХрд╛рд░реНрдп рдХреЛ рд╕реНрдерд┐рд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ =) рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдХрд┐рд╕реА рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЪреБрдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА ... рдЗрд╕рд▓рд┐рдП рдзрд╛рдЧрд╛ред

рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореИрдВ @nikomatsakis рджреНрд╡рд╛рд░рд╛ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд @ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдкреНрд░рд╢рдВрд╕рдХ рд╣реВрдВред рдпрд╣ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╣реИ, рдФрд░ рдпрдереЛрдЪрд┐рдд рдЖрддреНрдо-рд╡реНрдпрд╛рдЦреНрдпрд╛рддреНрдордХ рд╣реИред рд╣рдореЗрдВ рдпрд╣рд╛рдВ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдирдпрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдкреЗрд╢ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдЖрд░рдХреНрд╖рд┐рдд рдирд╛рдо рдЬреИрд╕реЗ crate (рдпреВрдШ) рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЪрд╛рд░ рдмреЗрд╣рддрд░ рд╣реИред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЕрдм рджреВрд╕рд░реЗ рдмрд╛рд╣рд░реА рдкреЙрдЗрдВрдЯрд░ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рджрд┐рдП рдЧрдП https://github.com/rust-lang/cargo/issues/1311 рдХреЛ рдЕрдм рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрдВрдж рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП)ред рдереЛрдбрд╝реА рд╕реА рд╕рд▓рд╛рд╣ рдФрд░ @ рдмрдирд╛рдо crate рд╕рд┐рдВрдЯреИрдХреНрд╕ рдкрд░ рдирд┐рд░реНрдгрдп рдХреЗ рд╕рд╛рде, рдореИрдВ рд╕рдВрднрд╡рддрдГ рдЗрд╕рд╕реЗ рдирд┐рдкрдЯ рд╕рдХрддрд╛ рдерд╛ред рд╡рд┐рдЪрд╛рд░?

рджреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд▓рд┐рдВрдЯ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдЯреНрд░реИрдХрд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛рдПрдБред

рдореЗрд░реЗ рд╕рд╛рде рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЫреЛрдЯреА рд╕рдВрдЧрддрддрд╛ рд╕рдорд╕реНрдпрд╛ рд╣реИ: рдЕрдЧрд░ рд╣рдореЗрдВ extern crate рдирд┐рд╣рд┐рдд рд╣реЛрдирд╛ рд╣реИ, рддреЛ рдЙрд╕ рдХрд╛рдо рдХреЛ рдХрд░рдиреЗ рдореЗрдВ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдмрджрд▓рд╛рд╡ рд╢рд╛рдорд┐рд▓ рд╣реИ - extern crate рдХреНрд░реЗрдЯ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИ; рдпрджрд┐ рдЖрдк Cargo.toml рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреНрд░реЗрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди lib.rs рдирд╣реАрдВ рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рд╕рд╛рде рд▓рд┐рдВрдХ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдкреИрдирд┐рдХ = рдкреИрдирд┐рдХ = рдПрдмреЙрд░реНрдЯ рдХреЗ рд╕рд╛рде рдЦреЛрд▓рдирд╛, рдпрд╛ рд╕рдорд╛рди рдкреНрд░рддреАрдХ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреНрд░реЗрдЯ) рддреЛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддрд╛ рд╣реИред рдХреНрдпрд╛ рд╣рдордиреЗ рдЗрд╕реЗ рдПрдХ рдЧреИрд░-рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рдЯреВрдЯрдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИ?

рдореЗрд░реЗ рд╕рд╛рде рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЫреЛрдЯреА рд╕рдВрдЧрддрддрд╛ рд╕рдорд╕реНрдпрд╛ рд╣реИ: рдпрджрд┐ рд╣рдореЗрдВ рдмрд╛рд╣рд░реА рдЯреЛрдХрд░рд╛ рдирд┐рд╣рд┐рдд рд╣реЛрдирд╛ рд╣реИ, рддреЛ рдЙрд╕ рдХрд╛рдо рдХреЛ рдХрд░рдиреЗ рдореЗрдВ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рд╢рд╛рдорд┐рд▓ рд╣реИ - рдмрд╛рд╣рд░реА рдЯреЛрдХрд░рд╛ рдмрд▓ рдЯреЛрдХрд░реЗ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП; рдпрджрд┐ рдЖрдк Cargo.toml рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреНрд░реЗрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди lib.rs рдирд╣реАрдВ рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рд╕рд╛рде рд▓рд┐рдВрдХ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдкреИрдирд┐рдХ = рдкреИрдирд┐рдХ = рдПрдмреЙрд░реНрдЯ рдХреЗ рд╕рд╛рде рдЦреЛрд▓рдирд╛, рдпрд╛ рд╕рдорд╛рди рдкреНрд░рддреАрдХ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреНрд░реЗрдЯ) рддреЛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддрд╛ рд╣реИред рдХреНрдпрд╛ рд╣рдордиреЗ рдЗрд╕реЗ рдПрдХ рдЧреИрд░-рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рдЯреВрдЯрдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИ?

рдЗрд╕рдХрд╛ рдПрдХрдорд╛рддреНрд░ рд╕рдорд╛рдзрд╛рди рдореИрдВрдиреЗ рдЕрдм рддрдХ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рдЬрдм рдЖрдк рдЙрд╕ рдЯреЛрдХрд░реЗ рд╕реЗ рдХреБрдЫ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреЗрд╡рд▓ рдПрдХ рдЯреЛрдХрд░рд╛ рдХреЛ рдХреЗрд╡рд▓ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдореЗрдВ рдЕрднреА рднреА рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред рдРрд╕реЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ рдЬрд┐рдирд╕реЗ рдХреНрд░реЗрдЯ рдХреЗрд╡рд▓ рдЖрдпрд╛рдд рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЬрдВрдЧ рдкреНрд░рддреАрдХреЛрдВ рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рд╕реЗ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рджреЗрд╢реА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рд▓рд┐рдВрдХ рдХрд░рдирд╛ рдпрд╛ рджреЗрд╢реА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдХреБрдЫ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП #[no_mangle] рдкреНрд░рддреАрдХреЛрдВ рдХрд╛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдирд╛ред рдПрдХ рдмрд╛рд░ extern crate рд╣рдЯрд╛ рджрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕ рддрд░рд╣ рдХреЗ рдЯреЛрдХрд░реЗ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд▓реЗрд╕рдмреЛ рд░рд╕реНрдЯ рдкреНрд░рддреАрдХ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рд▓реЛрдЧреЛрдВ рдХреЛ extern crate рдкрд░ рдЪрд┐рдкрдХреЗ рд░рд╣рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрд╛рдордХрд╛рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╡рд┐рдЪрд╛рд░ рдерд╛ред

рд╣рд╛рдБ, рд╣рдо рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ рдЗрд╕ рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ - рдПрдХ рдЯреЙрдкрд▓реЗрд╡рд▓ gkrust рдЯреЛрдХрд░рд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓ рдХреНрд░реЗрдЯ рдХреЗ рд▓рд┐рдП рдмрд╛рд╣рд░реА рдХреНрд░реЗрдЯ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд▓рд┐рдВрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдпреЗ рд░рд╕реНрдЯ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдмрд╛рд╣рд░реА рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ)

рдЖрдк рдЗрд╕реЗ рдмрд╛рдзреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП lib.rs рдореЗрдВ рд▓реЛрдЧреЛрдВ рдХреЛ use cratename; рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП #![link_crates(stylo,webrender)] рд╡рд┐рд╢реЗрд╖рддрд╛ рд░рдЦрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? extern crate рд╡рд┐рдкрд░реАрдд, рдпрд╣ рдирд╛рдо рдХреЗ рдкреЗрдбрд╝ рдореЗрдВ рдЯреЛрдХрд░рд╛ рдирд╣реАрдВ рдЬреЛрдбрд╝реЗрдЧрд╛ред рдЗрд╕реЗ рдПрдХ рдирдпрд╛ рдирд╛рдо рджреЗрдиреЗ рд╕реЗ рдкрд╛рдардХреЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдВрдХреЗрдд рдорд┐рд▓реЗрдЧрд╛ рдХрд┐ рдЖрдк рдХреЗрд╡рд▓ рд▓рд┐рдВрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рдХреНрд░реЗрдЯ рд╢рд╛рдорд┐рд▓ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдХрд┐ рдХрдерди рдХреЛ рд╣рдЯрд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрдмрдХрд┐ extern crate рдЪрд╛рд╣рд┐рдПред

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╡рд┐рдкрд░реАрдд рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ?

рдУрд╣, рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ, 2015 рдХреЗ рдпреБрдЧ рдХреЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЙрдиреНрд╣реЗрдВ рдпреБрдЧ рдмрджрд▓рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ _everyone_ рдХреЛ link_crates рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдпрд╣ рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реИред

рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП #![link_crates(stylo,webrender)] рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдмрд╛рд╣рд░реА рдЯреЛрдХрд░реЗ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрд╣ рдЯреЛрдХрд░рд╛ рдХреЛ рдирд╛рдо рдХреЗ рдкреЗрдбрд╝ рдореЗрдВ рдирд╣реАрдВ рдЬреЛрдбрд╝реЗрдЧрд╛ред

рдЙрди рдХреНрд░реЗрдЯреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреЛ рдпрд╛ рддреЛ рдХреЗрд╡рд▓ рд▓рд┐рдВрдХ рд╡рд╛рд▓реЗ рдЯреЛрдХрд░реЗ рдХреЗ рд░реВрдк рдореЗрдВ, рдЬрдВрдЧ рдХреЗ рдкреНрд░рддреАрдХреЛрдВ рд╡рд╛рд▓реЗ рдЯреЛрдХрд░реЗ рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╛ рджреЛрдиреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ?

@whitequark рдпрджрд┐ рдЖрдк рдЙрди рдХреНрд░реЗрдЯреЛрдВ рд╕реЗ рдкреНрд░рддреАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдореБрдлреНрдд рдореЗрдВ рд▓рд┐рдВрдХреЗрдЬ рдорд┐рд▓реЗрдЧрд╛ рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИред рд╡рд┐рд╢реЗрд╖рддрд╛ рдЙрдкрдпреЛрдЧ рд╕рд╛рдЗрдЯ рдкрд░ рд╣реЛрдЧреА рддрд╛рдХрд┐ рдЖрдк рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХреНрд░реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрдВред

@Manishearth

рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╕рднреА рдХреЛ рдПрдХ рд▓рд┐рдВрдХ_рдХреНрд░реЗрдЯреНрд╕ рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдпрд╣ рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реИред

рдирд╣реАрдВред рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЛ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдореИрдВ рдЙрд╕ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬрд╣рд╛рдВ use cratename::item; рдХрд╛ рд╡рд╣реА рдкреНрд░рднрд╛рд╡ рд╣реИ рдЬреЛ link_crates рдмрд░рдХрд░рд╛рд░ рд╣реИред link_crates рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рддрднреА рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рдЖрдкрдХреЛ рдЯреЛрдХрд░рд╛ рд╕реЗ рдХрд┐рд╕реА рдЖрдЗрдЯрдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛ, рд▓реЗрдХрд┐рди рд▓рд┐рдВрдХреЗрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛред рдпрджрд┐ рдЖрдк рдХреНрд░реЗрдЯ рд╕реЗ рдХреЛрдИ рдЖрдЗрдЯрдо рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд▓рд┐рдВрдХреЗрдЬ рдорд┐рд▓реЗрдЧрд╛ рдЬреИрд╕реЗ RFC рдиреЗ рдХреИрд╕реЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рдерд╛ред

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЙрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рдХреЛрдб рдореЗрдВ use cratename; рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд▓рд┐рдВрдЯ рдФрд░ (рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг) рдХреЛрдб рдкрд╛рдардХреЛрдВ/рд▓реЗрдЦрдХреЛрдВ рдХреЛ рднреНрд░рдорд┐рдд рдХрд░реЗрдЧрд╛, рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрд╕ рд╡реИрдз рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд░реНрдкрд┐рдд рд╕реБрд╡рд┐рдзрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП (рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рд╣реА рдХрднреА) рдХреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

@ est31 link_crates рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдкрд░ рдмрд╛рдЗрдХрд╢реЗрдбрд┐рдВрдЧ, рдЗрд╕реЗ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд░рдЦрдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣рдо extern crate foo; рдЬреИрд╕рд╛ рдХреБрдЫ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддреЗ?

@рд░реЗрдЯреЗрдк998
рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░! :рдореБрд╕реНрдХреБрд░рд╛рдУ:
https://github.com/rust-lang/rfcs/pull/2166 рдиреЗ extern crate foo as _; рднреА рдкреЗрд╢ рдХрд┐рдпрд╛ рддрд╛рдХрд┐ рдХреНрд░реЗрдЯ рдХреЗ рдирд╛рдо рдХреЛ рд▓рд┐рдВрдХреЗрдЬ-рдУрдирд▓реА рдХреНрд░реЗрдЯ рдХреЗ рд▓рд┐рдП рд╕реНрдХреЛрдк/рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд▓рд╛рдиреЗ рд╕реЗ рдмрдЪрд╛ рдЬрд╛ рд╕рдХреЗред

@ est31 рд▓рд┐рдВрдХ_рдХреНрд░реЗрдЯреНрд╕ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдкрд░ рдмрд╛рдЗрдХрд╢реЗрдбрд┐рдВрдЧ, рдЗрд╕реЗ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд░рдЦрдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдмрд╛рд╣рд░реА рдХреНрд░реЗрдЯ рдлреВ рдЬреИрд╕рд╛ рдХреБрдЫ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддреЗ ??

рд╣рд╛рд▓рд╛рдВрдХрд┐, рд▓рдВрдмреЗ рд╕рдордп рдореЗрдВ extern crate рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдкреВрд░реНрдг рдмрд┐рдВрджреБ рд╣реИред

@alexreg рдмрд┐рдВрджреБ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдмрдирд╛рдпрд╛ рдЬрд╛рдПред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдорд┐рдЯрд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрднреА рднреА рдПрдХ рдЯреЛрдХрд░рд╛ рдХреЗ рдХрд┐рдирд╛рд░реЗ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬрд┐рд╕реЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЬрдВрдЧ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдП рдмрд┐рдирд╛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред (рдФрд░ рд╡реИрд╕реЗ рднреА рдпрд╣ рддрдм рддрдХ рдЬреАрд╡рд┐рдд рд░рд╣реЗрдЧрд╛ рдЬрдм рддрдХ рд╕рдВрдХрд▓рдХ рдкреБрд░рд╛рдиреЗ рдпреБрдЧреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред)

@SimonSapin рд▓реЗрдХрд┐рди рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реБрдП, рдЕрдЧрд░ рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдХрд┐рдирд╛рд░реЗ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рддреЛ рд╢рд╛рдпрдж рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╣реЛрдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рдФрд░ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ (рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╣реИ) рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрдПрдЧрд╛ред

рдореБрдЭреЗ рдЕрднреА рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ use foo рдпрд╛ use foo as _ рдпрд╣рд╛рдВ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ

@Manishearth рд╕реЗ рд╕рд╣рдордд рд╣реВрдВред

extern crate; рдкрд░ рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рдХрд╛ рд╕рд╛рд░рд╛рдВрд╢:

рд▓рд╛рдн:

  • extern crate рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдкреНрд░рдпреБрдХреНрдд рдХреНрд░реЗрдЯреЛрдВ рдХреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╕реВрдЪреА рджреЗрддрд╛ рд╣реИред рдЕрдм рд╕рд╛рдорд╛рдиреНрдп рдмрдХреНрд╕реЗ рдХреЗ рд╕рд╛рде рдпрд╣ рдЙрддрдирд╛ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ extern crate рдЯреЛрдХрд░рд╛ рдореЗрдВ рдХрд╣реАрдВ рднреА рджрд┐рдЦрд╛рдИ рджреЗ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕реВрдЪреА рдХреЛ рд╕рдВрдкреВрд░реНрдг рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрд╣ рдХрдо рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИред рд╣рдо рд╣рдореЗрд╢рд╛ рдмрд╛рд╣рд░реА рдХреНрд░реЗрдЯ рдХреЛ рдХреЗрд╡рд▓ рдХреНрд░реЗрдЯ рд░реВрдЯ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдиреБрдХрд╕рд╛рди:

  • extern crate рдПрдХ рдЫреЛрдЯреА рд╕реА рдЭреБрдВрдЭрд▓рд╛рд╣рдЯ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЯреЛрдХрд░рд╛ рдЬреЛрдбрд╝рддреЗ рд╕рдордп рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдХрдИ рд▓реЛрдЧ extern crate рдЦрд┐рд▓рд╛рдл рд╣реИрдВ рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдкреНрд░реЗрд░рдХ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИред
  • рдореИрдВ рдПрдХ рд╡реНрдпрд╛рдкрд╛рд░ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдмрдирдиреЗ рдХреЗ рд▓рд┐рдП extern crate рджреЗрдЦрддрд╛ рд╣реВрдВ: рд╣рдо extern crate рд▓реЗрдХрд┐рди рдЖрдпрд╛рдд-рд╕реЗ-рдЦреБрдж-рдЯреЛрдХрд░рд╛ рдмрдирд╛рдо рдЖрдпрд╛рдд-рд╕реЗ-рдмрд╛рд╣рд░реА-рдЯреЛрдХрд░рд╛ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ рдФрд░ рдХреЛрдб рдЙрджрд╛рд╣рд░рдгреЛрдВ/рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╕реАрдЦрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рдиреБрдХрд╕рд╛рди IMO рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВ extern crate рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рд╕рд╣рдордд рд╣реВрдВред

рдмрд╛рд╣рд░реА рдЯреЛрдХрд░рд╛ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдкреНрд░рдпреБрдХреНрдд рдХреНрд░реЗрдЯреЛрдВ рдХреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╕реВрдЪреА рджреЗрддрд╛ рд╣реИред рдЕрдм рд╕рд╛рдорд╛рдиреНрдп рдХреНрд░реЗрдЯреЛрдВ рдХреЗ рд╕рд╛рде рдпрд╣ рдЙрддрдирд╛ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рдХрд┐ Cargo.toml рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ рддреЛ рдпрд╣ рдЕрддреНрдпрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдкрдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд░реЗрдЯ рдХреА рдПрдХ рд╕реВрдЪреА рджреЗрддрд╛ рд╣реИред

рдореИрдВ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдпрд╣ рдпрд╣рд╛рдБ рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ; рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рдорд░реНрдЬ рдХрд┐рдП рдЧрдП RFC рдХреЗ рд╡рд┐рд░реБрджреНрдз рдПрдХ рдмрд┐рдВрджреБ рд╣реИред

@Manishearth рдореИрдВ рдФрд░ рдЕрдзрд┐рдХ @ рдпрд╣рд╛рдБ lib.rs рд╕реЗ рдмрд╛рд╣рд░реА рдЯреЛрдХрд░рд╛ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдПрд░реНрдЧреЛрдиреЙрдорд┐рдХреНрд╕ рдФрд░ рд╕реАрдЦрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд╛рднреЛрдВ рдХреЗ рд▓рд┐рдП hello_world.rs рд▓рд┐рдП рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ (рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХреЗ рд▓реЗрдЦрдХ рдирд╣реАрдВ)ред

рдпрд╣ рдЕрдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЬрд┐рд╕ рдЪреАрдЬ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ (рдкреАрдЯрд░ рдХреА рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдЬрд┐рд╕рдХрд╛ рдЖрдк рдЬрд╡рд╛рдм рджреЗрддреЗ рд╣реИрдВ) рд▓рд┐рдВрдХ-рдУрдирд▓реА рдХреНрд░реЗрдЯ рд╣реИ; рдЬреЛ рдПрдХ рдЖрд▓рд╛ рдкрд░реНрдпрд╛рдкреНрдд рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рд╣реИрдВ рдХрд┐ "рд╢реАрд░реНрд╖ рдкрд░ рдЕрдкрдиреЗ рд╕рднреА рдмрд╛рд╣рд░реА рдмрдХреНрд╕реЗ рд╕реВрдЪреАрдмрджреНрдз рдХрд░реЗрдВ" рдПрдХ рдорд╛рдореВрд▓реА рд▓рд╛рдн рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╣реИрдВ рдЬреЛ _not_ рд▓рд┐рдВрдХ-рдУрдирд▓реА рдХреНрд░реЗрдЯреНрд╕ рд╣реИрдВ (рдпрд╣ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдХреЗ рд▓рд┐рдП рд╕рдЪ рдирд╣реАрдВ рд╣реБрдЖ рдХрд░рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдм рд╣реИ)ред

рдпрджрд┐ рдЖрдкрдХреА рдмрд╛рдд рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ рдХрд┐ рдирд┐рд╣рд┐рдд рдмрд╛рд╣рд░реА рдЯреЛрдХрд░рд╛ рдЪреАрдЬрд╝ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ (рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд▓рд┐рдВрдХ-рдУрдирд▓реА рдХреНрд░реЗрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ), рддреЛ рдпрд╣ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдмрд┐рдВрджреБ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рд╕реЗ рд╕рд╣рдордд рдирд╣реАрдВ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдФрд░ рдЕрдзрд┐рдХ рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдЬрдм рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдЖрдзреЗ рдХреЛрдб рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП, рдЕрдЧрд░ рдореИрдВ рдЧрд▓рдд рдирд╣реАрдВ рд╣реВрдВ, рддреЛ рдпрд╣рд╛рдВ рдХреЗрд╡рд▓ рд╢реЗрд╖ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрд┐рдВрджреБ #48719 рд╣реИред рдХреНрдпрд╛ рдХреЛрдИ рдЕрдм рдЗрд╕рд╕реЗ рдирд┐рдкрдЯ рд░рд╣рд╛ рд╣реИ? рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдореИрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реВрдБ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ...

рд╣рд╛рдВ, рд╣рдо #50260 . рдореЗрдВ рд╕рд╛рдорд╛рди рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ

рд╢рдирд┐рд╡рд╛рд░, рдЕрдкреНрд░реИрд▓ 28, 2018, 9:15 рдкреВрд░реНрд╡рд╛рд╣реНрди рдЕрд▓реЗрдХреНрдЬреЗрдВрдбрд░ рд░реЗрдЧреБрдПрд░реЛ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com . рдкрд░
рд▓рд┐рдЦрд╛ рдерд╛:

рдЗрд╕рд▓рд┐рдП, рдЕрдЧрд░ рдореИрдВ рдЧрд▓рдд рдирд╣реАрдВ рд╣реВрдВ, рддреЛ рдпрд╣рд╛рдВ рдХреЗрд╡рд▓ рд╢реЗрд╖ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрд┐рдВрджреБ рд╣реИ

48719 https://github.com/rust-lang/rust/issues/48719 ред рдХреЛрдИ рд╣реИ

рдЕрдм рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдирд╛? рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдореИрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реВрдБ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ...

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/rust-lang/rust/issues/44660#issuecomment-385187379 ,
рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/ABivSMyg6L4nQ1O7nMcvY4JCGjWKRiq3ks5ttJWhgaJpZM4PaPWi
.

48722 рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред @ рдордиреАрд╖рд╛рд░реНрде рдХреНрдпрд╛ рдЖрдк рдУрдкреА рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреГрдкрдпрд╛ :)

@mark-im @Manishearth https://github.com/rust-lang/cargo/issues/1311 рднреА рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЙрд╕ рдмрд┐рдВрджреБ рдХреЛ рдЪреЗрдХрдмреЙрдХреНрд╕ рдореЗрдВ рдмрджрд▓рдирд╛ рдФрд░ рдЙрд╕ рдкрд░ рдЯрд┐рдХ рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реЛред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдЙрддреНрд╕реБрдХ рд╣реВрдВ: рдЬрдм рдХрд╛рд░реНрдЧреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ? (рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреЛрдИ рд╕рдордЭрджрд╛рд░ рдХрд╛рд░реНрдЧреЛ рд╕реЗ рдмрдЪрддрд╛ рд╣реИ...)

@alexreg рдПрдХ рдЯреЛрдХрд░рд╛ рдХрд╛ рдирд╛рдо рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╕реНрдЯрдХ рдХреЛ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдЧреЛ рдЬрд┐рд╕ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рдХрд╛рд░реНрдЧреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд╕реБрд▓рдн рд╣реИ: --extern name_rustc_sees=path_to_dep.rlib ред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЬрд▓реНрдж рд╣реА рд╕рдВрдкреВрд░реНрдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЪрд░рдг рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрдВрдЧреЗ - рдЬрдм https://github.com/rust-lang/rust/pull/47992 рднреВрдорд┐, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВред рдХреНрдпрд╛ рдореБрдЭреЗ рдХреБрдЫ рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИ? рдЗрд╕реЗ рдЖрдЧреЗ рдмрдврд╝рд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛ рд░рд╣реА рд╣реИ рдЕрдЧрд░ рдХреЛрдИ рдмрд┐рдЯ рдФрд░ рдмреЙрдм рдХрд░рдирд╛ рдмрд╛рдХреА рд╣реИред

рд╣рд╛рдБ, рдпрд╣ рд░рд╛рд╕реНрддреЗ рдореЗрдВ рд╣реИред рдореБрдЭреЗ рдЗрд╕реЗ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдЬреЛ рдореИрдВ рд╢рд╛рдпрдж рдЬрд▓реНрджреА рдХрд░реВрдБрдЧрд╛
рдЕрдЧрд▓реЗ рд╕рдкреНрддрд╛рд╣ред

рдЧреБрд░реБ, 3 рдордИ, 2018 рдХреЛ рд╢рд╛рдо 7:51 рдмрдЬреЗ рдЕрд▓реЗрдХреНрдЬрд╝реЗрдВрдбрд░ рд░реЗрдЧреБрдПрд░реЛ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com
рд▓рд┐рдЦрд╛ рдерд╛:

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЬрд▓реНрдж рд╣реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдкреВрд░рд╛ рдЪрд░рдг рдкреВрд░рд╛ рдХрд░ рд▓реЗрдВрдЧреЗ - рдХрдм

47992 https://github.com/rust-lang/rust/pull/47992 рднреВрдорд┐, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВред рдкреВрд░реНрд╡рд╛рд╣реНрди

рдореБрдЭреЗ рдХреБрдЫ рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИ? рдЕрдЧрд░ рдХреЛрдИ рдмрд┐рдЯ рд╣реИ рддреЛ рдЗрд╕реЗ рдЖрдЧреЗ рдмрдврд╝рд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛ рд░рд╣реА рд╣реИ
рдмреЙрдмреНрд╕ рдХрд░рдирд╛ рдмрд╛рдХреА рд╣реИред

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/rust-lang/rust/issues/44660#issuecomment-386494018 ,
рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/ABivSDYFonDWvxZEdxWXoykroaL2mJPxks5tu8I_gaJpZM4PaPWi
.

@ рдордиреАрд╖рд╛рд░реНрде рдЕрдЪреНрдЫреА рдЪреАрдЬреЗрдВред

@aturon https://github.com/rust-lang/rust/pull/50260 рдХреЗ рд╕рд╛рде рдЙрддрд░рд╛, рдХреНрдпрд╛ рд╕рдм рдХреБрдЫ рд▓рд╛рдЧреВ рд╣реИ?

рдХрд┐рд╕реА рдХреЛ рдЙрд╕ рдпреЛрдЬрдирд╛ рдХрд╛ рд▓рд┐рдВрдХ рдорд┐рд▓рд╛ рдЬреЛ RFC рдХреЗ рдмрд╛рдж рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХреА --extern рдХреНрд░реЗрдЯ рдХреЗ рдЖрдпрд╛рдд рдХреЛ рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЖрджрд┐)

рдЪреВрдВрдХрд┐ рдпрд╣ рдЗрддрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд░рд┐рд╡рд░реНрддрди рд╣реИ, рд╢рд╛рдпрдж RFC рдХреЛ рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?

RFC рдЖрдорддреМрд░ рдкрд░ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ; рд╡реЗ рдЕрдВрддрд┐рдо рдпреБрдХреНрддрд┐ рдирд╣реАрдВ рд╣реИрдВред рд╡реЗ рдПрдХ рд╣реИрдВ
рд╕рд░реНрд╡рд╕рдореНрдорддрд┐ рдирд┐рд░реНрдорд╛рдг рдЙрдкрдХрд░рдгред

рд╕реЛрдо, рдЬреВрди 18, 2018 рдХреЛ рд░рд╛рдд 9:43 рдмрдЬреЗ, рдХреМрди? рдореИрдВ?! рд╕реВрдЪрдирд╛рдПрдВ @

рдЪреВрдВрдХрд┐ рдпрд╣ рдЗрддрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд░рд┐рд╡рд░реНрддрди рд╣реИ, рд╢рд╛рдпрдж RFC рдХреЛ рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЗрд╕ рдереНрд░реЗрдб рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реА рд╣реИред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/rust-lang/rust/issues/44660#issuecomment-398247665 ,
рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/AABsij-Iwwb7vf4qBrsq9KFFqhuIbkVBks5t-Fc3gaJpZM4PaPWi
.

@mark-im рд╡рд╣ рдкреНрд░рд╡рдЪрди рдкреЛрд╕реНрдЯ RFC рдХреА рднрд╛рд╡рдирд╛ рдХреЗ рдЕрдВрджрд░ рд░рд╣рддрд╛ рд╣реИред рдЙрд╕ рдкреЛрд╕реНрдЯ рдХреЗ рд╕рд╛рде рдЖрд░рдПрдлрд╕реА рдХреЗ рд╕рд╛рд░рд╛рдВрд╢ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ, рдпрд╣ рдЕрдзрд┐рдХрддрд░ рд╡рд╣реА рд╣реИ, рдЫреЛрдЯреЗ рд╡рд┐рд╡рд░рдг рд╕реЗ рдкрд░реЗред рдРрд╕реЗ рдЖрд░рдПрдлрд╕реА рдереЗ рдЬрд╣рд╛рдВ рдЯреАрдо рдиреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдирд╣реАрдВ рд╣реИред

рдпрд╣ рд╕рдм рд╕рдЪ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╕рднреА рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рд╣реЛрдВред рдореИрдВ рдЙрд╕ рдХреА рддрд╛рд░реНрдХрд┐рдХ рдЪреБрдиреМрддреА рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ ...

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ 2018 рд╕рдВрд╕реНрдХрд░рдг рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдЕрдм рддреИрдпрд╛рд░ рд╣реИ, рдФрд░ рдЗрд╕рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░рд┐рд╡рд░реНрддрди рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдХреГрдкрдпрд╛ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ рдФрд░ рдпрд╣рд╛рдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдВ!

@aturon рдЕрдВрддрд┐рдо рдЕрджреНрдпрддрди, рдФрд░ рдореЙрдбреНрдпреВрд▓ рдХрд╛рд░реНрдп рд╕рдореВрд╣ рдХреА рдЕрдВрддрд┐рдо рдмреИрдардХ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк https://internals.rust-lang.org/t/the-great-module-adventure-continues/6678/205 рд╣реБрдЖ , рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛ " рджреЛ рд░реВрдкреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдПрдХрд▓ рдореВрд▓ рдкреНрд░рд╕реНрддрд╛рд╡ рддрдХ рд╕реАрдорд┐рдд"ред рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореЗрд░реА рдЬрд╛рдирдХрд╛рд░реА рд╣реИ, рдпрд╣ рдЕрднреА рднреА рд╕рдЪ рдерд╛ред рдореБрдЭреЗ рдпрд╣ рдЖрднрд╛рд╕ рд╣реБрдЖ рдХрд┐ рджреЛрдиреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдлреАрдЪрд░ рдлреНрд▓реИрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░рд╛рдд рдореЗрдВ рджреЛрдиреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдВрд╕реНрдХрд░рдг рдиреЗ рджреЛ рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдЪреБрдирд╛, рдмрд┐рдирд╛ рдлреАрдЪрд░ рдЭрдВрдбреЗ рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рдЪреБрдирд╛, рдФрд░ рдЗрд╕реЗ рд╕рдВрд╕реНрдХрд░рдг рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдореЗрдВ рдкреНрд░рд▓реЗрдЦрд┐рдд рдХрд┐рдпрд╛ред рдЙрд╕ рдкрд░ рдХрд╣рд╛рдВ рдЪрд░реНрдЪрд╛ рд╣реБрдИ? рдХреНрдпреЛрдВрдХрд┐ рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореИрдВ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рд╡рд╣рд╛рдВ рди рддреЛ рдореЙрдбреНрдпреВрд▓ рд╡рд░реНрдХрд┐рдВрдЧ рдЧреНрд░реБрдк рдФрд░ рди рд╣реА рд▓реИрдВрдЧ рдЯреАрдо рд╢рд╛рдорд┐рд▓ рдереАред

рдХреГрдкрдпрд╛ рдПрдХ рдирдП рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд▓рд┐рдП https://internals.rust-lang.org/t/relative-paths-in-rust-2018/7883 рджреЗрдЦреЗрдВ, 2018 рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рд╕реЗ рдирд┐рд░реНрдорд╛рдгред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдпрд╣ рдкреНрд░рд╕реНрддрд╛рд╡ рд░реВрдЯ рдореЙрдбреНрдпреВрд▓ рдФрд░ рд╕рдмрдореЙрдбреНрдпреВрд▓ рдХреЗ рдмреАрдЪ рдЕрдзрд┐рдХ рд╕реНрдерд┐рд░рддрд╛ рдФрд░ рдПрдХрд░реВрдкрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдФрд░ use рдХрдердиреЛрдВ рдФрд░ рдХреЛрдб рдореЗрдВ рдкрде рдХреЗ рдкреНрд░рддреНрдпрдХреНрд╖ рдЙрдкрдпреЛрдЧ рджреЛрдиреЛрдВ рдореЗрдВ рд╕рдорд╛рди рдирд╛рдо рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдирдорд╕реНрддреЗ, ::some::path рдмрдирд╛рдо crate::some::path рдкрд░ рдмрд╕ рдореЗрд░реЗ 2 рд╕реЗрдВрдЯ - рдореИрдВ рдмрд╛рдж рд╡рд╛рд▓реЗ рдХреЛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ, рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рд╛рджрд╛ рдЕрдВрдЧреНрд░реЗрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рдкрдврд╝рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдФрд░ рдкрд╛рдЧрд▓ рдмрд╛рдПрдВ рд▓рдЯрдХрддреЗ рд╡рд┐рд░рд╛рдо рдЪрд┐рд╣реНрди рдХреЛ рдирд╣реАрдВ рдЫреЛрдбрд╝рддрд╛ рд╣реИред

рдХреГрдкрдпрд╛ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ рдФрд░ рдпрд╣рд╛рдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдВ!

рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдпрд╣реА рдорддрд▓рдм рдерд╛ред рдлрд╝реНрдпреВрдЪрд░реНрд╕ рдХреНрд░реЗрдЯ рдореЗрдВ рдПрдХ рдмрдбрд╝реЗ рдмрджрд▓рд╛рд╡ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЬрд┐рд╕рдореЗрдВ рд╕рднреА pub(crate) s рдХреЛ crate рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдореБрдЭреЗ рдЕрдзрд┐рдХ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдЖрдпрд╛рдд рдФрд░ рджреГрд╢реНрдпрддрд╛ рджреЛрдиреЛрдВ рдореЗрдВ crate рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрд╢реЛрдзрдХ рдЕрдкреНрд░рд╛рдХреГрддрд┐рдХ рдФрд░ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд▓рдЧрддрд╛ рд╣реИред

crate enum Either<T, U> {
    A(T),
    B(U),
}

рдореБрдЭреЗ рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬрдм рджреЛрдиреЛрдВ рдХрд╛ рдПрдХ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

crate use crate::foo;

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рд▓рд┐рдВрдЯ рдЗрд╢реНрдпреВ рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ pub(crate) рдХреЛ рдХреЗрд╡рд▓ crate рдмрджрд▓рдиреЗ рд╕реЗред

(рдиреЛрдЯ: рдореИрдВ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдХрд┐рд╕реА рдЕрдиреНрдп рднрд╛рдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЯрд┐рдкреНрдкрдгреА рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЬреЛ рдирд┐рд░рдВрддрд░рддрд╛ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ, рдХреЗрд╡рд▓ pub(crate) рд╕реЗ рд╕рд╛рджреЗ crate рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиред)

@seanmonstar рдЕрдЧрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд╕рд╛рде, рдореИрдВ рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ crate::foo рджреБрд░реНрд▓рдн рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдФрд░ crate use crate:: рдПрдХ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рджреБрд░реНрд▓рдн рдШрдЯрдирд╛ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред

рдкреНрд░рд╛рд░рдВрднрд┐рдХ 2018 рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдХреНрд░реЗрдЯ рдореЗрдВ рдЧрд╣рд░реЗ рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рд▓рд┐рдП рднреА crate:: рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдореЙрдбреНрдпреВрд▓ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рд╛рде, рдЖрдк рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА crate:: рдЖрдкрдХреЗ рдЯреЛрдХрд░рд╛ рдореЗрдВ рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, foo.rs рд╕реЗ lib.rs рдХреЗ рд▓рд┐рдП, рдпрд╛ foo рд╕реЗ / bar.rs foo.rs рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП), рд▓реЗрдХрд┐рди рдЖрдкрдХреЗ рдЯреЛрдХрд░реЗ рдореЗрдВ рдиреАрдЪреЗ рдХреЗ рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, lib.rs рд╕реЗ foo.rs рддрдХ, рдпрд╛ foo.rs рд╕реЗ foo/bar.rs рддрдХ)ред рдФрд░ рдЖрдо рддреМрд░ рдкрд░, рдореИрдВ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдПрдХ рдЧрд╣рд░реЗ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдХреБрдЫ рдлрд┐рд░ рд╕реЗ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрди: рдирд┐рд░реНрдпрд╛рдд (рдЪрд╛рд╣реЗ pub use рдпрд╛ crate use ) рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реВрдВ, рди рдХрд┐ рджреВрд╕рд░реА рддрд░рдлред

рддреЛ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рдореБрдЭреЗ crate use crate::foo; рджреЗрдЦрдХрд░ рдЖрд╢реНрдЪрд░реНрдп рд╣реЛрдЧрд╛ред

рдФрд░ рдлрд┐рд░ рднреА, рдЬрд┐рд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдореИрдВ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдореЗрд░реЗ рдкрд╛рд╕ рдмрд┐рд▓реНрдХреБрд▓ рдпрд╣реА рдкрд░рд┐рджреГрд╢реНрдп рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдореЙрдбреНрдпреВрд▓ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХрдИ "рдЬреЗрдиреЗрд░рд┐рдХ" рд╣реЗрд▓реНрдкрд░реНрд╕ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдПрдХ рдЕрдиреНрдп рдореЙрдбреНрдпреВрд▓ рдПрдХ рдмреЗрд╕ рдЯреНрд░реЗрдЯ + рдХреЙрдореНрдмрд┐рдиреЗрдЯрд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЪреВрдВрдХрд┐ рд╡реЗ рдХреБрдЫ рд╕рд╛рдорд╛рдиреНрдп рд╣реЗрд▓реНрдкрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЦреБрдж рдХреЛ рдЕрдиреНрдп рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ рд╣реИред рдЯреЛрдХрд░рд╛:

рд╡рд░реНрддрдорд╛рди рдореЗрдВ:

// in filter/mod.rs
pub(crate) use ::generic::{Combine, Func};

// in filters/foo.rs
use ::filter::{Filter, Func};

рд▓рд┐рдВрдЯ рдЪрд╛рд╣реЗрдЧрд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдЗрд╕рдореЗрдВ рдмрджрд▓ рджреВрдВ:

// in filter/mod.rs
crate use crate::generic::{Combine, Func};

рддреЛ, рдореИрдВ рдПрдХ рдХрд╛рд▓реНрдкрдирд┐рдХ рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛ рдЬрд┐рд╕рдХрд╛ рдХрднреА рдХреЛрдИ рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдпрд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╣реИред

рдореИрдВ @seanmonstar рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕рд╣рдордд рд╣реВрдВред рдЖрдЗрдП рдЗрд╕ рдХреАрд╡рд░реНрдб рдХреЛ рддрдм рддрдХ рдУрд╡рд░рд▓реЛрдб рди рдХрд░реЗрдВ рдЬрдм рддрдХ рдХрд┐ рд╣рдореЗрдВ (рдЬреЛ рд╣рдо рдирд╣реАрдВ рдХрд░рддреЗ)ред

рд╣рд╛рдБ, рдЖрдк рд╕рд╣реА рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ _рдЖрдорддреМрд░ рдкрд░ рдмрдмрд▓ рдЕрдк рдХреЛ рдкреБрдирдГ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╢реЙрди рдХреА рд░реВрдкрд░реЗрдЦрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ _laterally_ рдкреБрдирдГ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рднреА рдПрдХ рдЪреАрдЬрд╝ рд╣реИред рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рд╕рд░реНрд╡реЛ-рдореАрдбрд┐рдпрд╛ рдХреНрд░реЗрдЯ рдХреЗ рд▓рд┐рдП рднреА рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдлрд╛рдЗрд▓реЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рд╕рднреА рдиреЛрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕рд╛рдорд╛рдиреНрдп рдЖрдпрд╛рдд рд╣реИрдВред

рдХреНрдпрд╛ рдпрд╣ рдШреЛрд╖рд┐рдд рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ рдХрд┐ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рдВрднрд╡рддрдГ рд╕реНрдкрд╖реНрдЯ рдЙрдкрдпреЛрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд╢рд╛рдпрдж рдПрдХ рдЯреЛрдХрд░рд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ? рдореИрдВ рдПрдХ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдХреЛ рджреЗрдЦрдХрд░ рдпрд╣ рдЬрд╛рдирдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╣реИред рдХрд┐рд╕реА рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд░реВрдЯ-рд╕реНрддрд░реАрдп рдЖрдпрд╛рдд рдХреА рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╣реЛрдиреЗ рд╕реЗ рдЗрд╕рдХреЗ рдЕрдВрджрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рдВрджрд░реНрдн рджреЗрдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓рддреА рд╣реИ, рдмрдЬрд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рд╕рднреА рдмрд╛рд╣рд░реА рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рдирд┐рд╣рд┐рдд рд░реВрдк рд╕реЗ рджрд╛рдпрд░реЗ рдореЗрдВ рд╣реЛрдВ, рдФрд░ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдмрд╣реБрдд рдорджрдж рдХрд░рддреА рд╣реИрдВред

рдореЗрд░реА рдХреНрд░реЗрдЯ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рд░реВрдкрд╛рдВрддрд░рдг рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдореИрдВ рдХреБрдЫ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реЛрдЧрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдореИрдВ рдирд╣реАрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдЖрд╢реНрд╡рд╕реНрдд рд╣реВрдБ crate рдПрдХ рджреГрд╢реНрдпрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХреА рд╕рдВрд╢реЛрдзрдХ рдмрдЬрд╛рдп pub(crate) рд╣реИ рдПрдХ рд╕реБрдзрд╛рд░ред рдпрд╣рд╛рдБ рдореЗрд░рд╛ рддрд░реНрдХ рдпрд╣ рд╣реИ рдХрд┐ рдХреНрд░реЗрдЯ рдореЙрдиреАрдХрд░ рдХрд╛ рдХрд╛рдлреА рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдХреЗрд╡рд▓ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рдордиреЗ рдЪрд┐рдкрдХрд╛ рджреЗрдиреЗ рд╕реЗ рдпрд╣ рдереЛрдбрд╝рд╛ рдЧрдбрд╝рдмрдбрд╝ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ (рдпрд╣ рдореБрдЭреЗ рдХреБрдЫ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдЖрдкрдХреЛ рдорд┐рд▓рдиреЗ рд╡рд╛рд▓реЗ рдХреАрд╡рд░реНрдб рд╕реВрдк рдХреА рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдЬрд╛рд╡рд╛ рдХрд╛ public static void main() -- рдХрдо рд╕реЗ рдХрдо рдЬрдВрдЧ рдХреЗ рдЕрдВрдд рдореЗрдВ рд╡рд╛рдкрд╕реА рдкреНрд░рдХрд╛рд░ рд╣реИ)ред pub(crate) рдХрдо рд╕реЗ рдХрдо pub рдХреЛ рдмрд░рдХрд░рд╛рд░ рд░рдЦрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рд╕рдХреЗ рдХрд┐ crate рдЗрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ рджреГрд╢реНрдпрддрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред

рдпрд╣рд╛рдВ рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдореИрдВрдиреЗ рдЕрднреА рднрд╛рдЧ рд▓рд┐рдпрд╛ рд╣реИ рдЬреЛ crate рдХреАрд╡рд░реНрдб рдХреЛ рдПрдХ рджреГрд╢реНрдпрддрд╛ рд╕рдВрд╢реЛрдзрдХ рдФрд░ рдкрде рджреЛрдиреЛрдВ рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЬреЛ crate use crate... рдЙрджрд╛рд╣рд░рдг рд╕реЗ рднреА рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред

рд╡рд░реНрддрдорд╛рди:

pub(crate) struct Bar {
    pub(crate) foo: ::Foo,
}

pub(crate) struct Baz(pub(crate) ::Foo);

рдЗрд╕ рдЯреНрд░реИрдХрд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд╕рд╛рде:

crate struct Bar {
    crate foo: crate::Foo,
}

crate struct Baz(crate crate::Foo);

рдореБрдЭреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдирдпрд╛ рддрд░реАрдХрд╛ рд╡рд░реНрддрдорд╛рди рддрд░реАрдХреЗ рд╕реЗ рдЕрдзрд┐рдХ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд▓рдЧрддрд╛ рд╣реИред

рдЬрдм рдореИрдВрдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ pub(crate) рдХреЛ crate рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП RFC рдХреЛ рдкрдврд╝рд╛ рддреЛ рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдпрд╣ рдмрд┐рдирд╛ рджрд┐рдорд╛рдЧ рдХреЗ рд▓рдЧ рд░рд╣рд╛ рд╣реИред рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдмрд╛рдХреА рд╕рдВрдмрдВрдзрд┐рдд рд░рд╕реНрдЯ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ pub(crate) рдмрд╣реБрдд рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди...

рдереЛрдбрд╝рд╛ рдкрд┐рд╕реНрдЯрди рдЧреЗрдо рдХреЛ рд░рд╕реНрдЯ 2018 рдореЗрдВ @seanmonstar рдХреЗ рдкреНрд░рддрд┐ рд╕рд╣рд╛рдиреБрднреВрддрд┐ crate рдЫрд┐рдбрд╝рдХрд╛ рдЬрд╛рдирд╛ рд╕рдВрдЬреНрдЮрд╛рдирд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдкрд░реЗрд╢рд╛рди рдХрд░рдиреЗ

рдЬреИрд╕рд╛ рдХрд┐ рджреВрд╕рд░реЗ рдиреЗ рдХрд╣рд╛ рд╣реИ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреАрд╡рд░реНрдб рдХрд╛ рдЕрд░реНрде рджреЛрдиреЛрдВ рд╕рдВрджрд░реНрднреЛрдВ рдореЗрдВ рдмрд╣реБрдд рдЕрд▓рдЧ рд╣реИред

use crate::menu::{Sound, Volume};

crate mod color;

...

/// A type for storing text and an associated color it should
/// be drawn as.
crate struct ColoredText {
    crate color: types::Color,
    crate text: &'static str,
}

рдореИрдВ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рдмрд╛рдХреА рд╣рд┐рд╕реНрд╕реЛрдВ (рдореЙрдбреНрдпреВрд▓ рд╕рд┐рд╕реНрдЯрдо рдЕрдкрдбреЗрдЯ) рдХреЛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред

рдореБрдЭреЗ рд╕рд╣рд╛рдиреБрднреВрддрд┐ рд╣реИ рдХрд┐ pub(crate) рдереЛрдбрд╝рд╛ рднрд╛рд░реА рдФрд░ рдЕрдЬреАрдм рднреА рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдирдВрдЧреЗ crate рднреА рдЬрдЧрд╣ рд╕реЗ рдереЛрдбрд╝рд╛ рд╣рдЯрдХрд░ рд▓рдЧрддрд╛ рд╣реИред

рдХреНрдпрд╛ рд╣рдо crate рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдпрд╣рд╛рдВ рдПрдХ рдЕрд▓рдЧ рдХреАрд╡рд░реНрдб рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

@ рдиреАрдпрди 64 рд╕реБрдЭрд╛рдпрд╛ рдЧрдпрд╛ internal рдЬреЛ рдЙрдЪрд┐рдд рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдиреНрдп рднреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рд╣рдо рд░рд╕реНрдЯ 2018 рдореЗрдВ рдХреАрд╡рд░реНрдб рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реИред

internal рдореБрдЭреЗ pub(crate) рд╕реЗ рднрд╛рд░реА рд▓рдЧрддрд╛ рд╣реИред рдпрд╣ рдХреЛрдИ рдЫреЛрдЯрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдпрд╣ рдПрдХ рдирдпрд╛ рдХреАрд╡рд░реНрдб рд╣реИред

рдХреИрд╕реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ int ? :рдкреА

рдЕрдВрджрд░ ( ins ), рдЖрдВрддрд░рд┐рдХ ( int ), рд╕рдВрд░рдХреНрд╖рд┐рдд ( pro ), рд╕реНрдерд╛рдиреАрдп ( loc ), рдЧреБрдкреНрдд ( sec ), рдЖрдВрддрд░рд┐рдХ ( inn ) crate рдХреАрд╡рд░реНрдб рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред

рдХреНрдпрд╛ int рд╕реА/рд╕реА++ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реЛрдЧрд╛? (рдкреВрд░реНрдгрд╛рдВрдХ рдХреАрд╡рд░реНрдб)

рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдЬрдм рдЖрдк рдкрдм рджреЗрдЦрддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдЗрд╕реЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдорд╛рдирддреЗ рд╣реИрдВ, рдпрджрд┐ рдЖрдк рдПрдХ рдФрд░ рджреГрд╢реНрдпрддрд╛ рд╕реНрддрд░ рдкреЗрд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ рд▓рдЧрд╛рддрд╛рд░ рдмрдиреЗ рд░рд╣рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖рдг рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдореБрдЭреЗ рдпрд╛рдж рд╣реИ, рдкрдм рд╢реБрд░реВ рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЦрдбрд╝рд╛ рдерд╛ рдФрд░ рджреЛрдиреЛрдВ рд╣реА рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдкрдм (рдХреНрд░реЗрдЯ) рдЕрдзрд┐рдХ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд▓рдЧрддрд╛ рд╣реИред рдЙрд╕рдХреЗ рд▓рд┐рдП рдХреНрд░реЗрдЯ рд╕рд┐рд░реНрдл рдЕрдЬреАрдм рдХреАрд╡рд░реНрдб рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрдм (рдЯреЛрдХрд░рд╛) рдХреЛ рд╡реИрд╕реЗ рд╣реА рдЫреЛрдбрд╝рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ рдпрд╛ рд╡рд┐рд╢реЗрд╖рдг рд╕реЗ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд╛рдо рдЬреЛрдбрд╝рдирд╛ред

рдореБрдЭреЗ рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдирд╛рдордХрд░рдг рдореЗрдВ рдХрдард┐рдирд╛рдИ рдЗрд╕ рддрдереНрдп рд╕реЗ рдЖрддреА рд╣реИ рдХрд┐ рдкрдм рд╕рдВрдХреНрд╖реЗрдк рд╣реИ, рдЕрдЧрд░ рдпрд╣ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдерд╛ рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдирд┐рдЬреА рдпрд╛ рдЖрдВрддрд░рд┐рдХ рдХрд╣рдиреЗ рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓рдиреЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред

рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореБрдЭреЗ pub(crate) рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗ рд░рд╣реА рд╣реИред рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдкрд╣рд▓реА рдирдЬрд░ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬрдВрдЧ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЖрдкрдХреЛ рдЗрд╕реЗ рдЗрддрдиреА рдмрд╛рд░ рдЯрд╛рдЗрдк рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ 5 рдЕрддрд┐рд░рд┐рдХреНрдд рдХреБрдВрдЬреА рд╕реНрдЯреНрд░реЛрдХ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред

@UtherII

рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╣рдо рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд╛рдо рдХреА рдЬрд░реВрд░рдд pub(crate) рдХреНрдпреЛрдВрдХрд┐ рдХрд╛ рдПрдХ рдмрд╣реБрдд (рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХреА рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ) рдХреЗ рд╡рд░реНрддрдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ pub рдЗрд╕рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЬрдВрдЧ 2018 рдореЗрдВ, рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдирд┐рдЬреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП pub рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ (рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдирд┐рдЬреА рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ) рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рд╣реЛрдЧреАред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдРрд╕реА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП pub(crate) рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╕рдореНрдореЗрд▓рди рдХреЛрдб рдХреА рдкрдардиреАрдпрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░реЗрдЧрд╛: рдПрдХ рдЖрдЗрдЯрдо рдЕрдиреНрдп рдХреНрд░реЗрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рджреГрд╢реНрдпрдорд╛рди рд╣реЛрддрд╛ рд╣реИ рдпрджрд┐ рдФрд░ рдХреЗрд╡рд▓ рдЕрдЧрд░ рдЗрд╕реЗ pub рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдпрд╣ рдЕрдиреНрдп рдХреНрд░реЗрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рджреГрд╢реНрдпрдорд╛рди рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдпрд╣ рдПрдХ рдирдЬрд╝рд░ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВрдиреЗ рдЗрд╕ рд╕реВрддреНрд░ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЧрд▓рддреА рд╕реЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдмрдирд╛ рджрд┐рдпрд╛ рд╣реИред рдУрд╣, рдореИрдВ рдЬреАрдердм рдХреЗ рд▓рд┐рдП рдирдпрд╛ рд╣реВрдВ рдФрд░ рдмрд╕ рдПрдХ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛ рдЬрд┐рд╕рд╕реЗ рдореБрдЭреЗ рдЙрд╕ рдкрд░ рд╕рд╛рдЗрди рдЗрди рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдЬреЛ рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдпрд╣рд╛рдВ рдЬрд╡рд╛рдм рджреЗ рд░рд╣рд╛ рдерд╛ рд▓реЗрдХрд┐рди рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдмрдирд╛ рд░рд╣рд╛ рдерд╛ред рдЬреЛ рдореИрдВрдиреЗ рдирдП рдЕрдВрдХ рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИ, рдЙрд╕реЗ рдореИрдВ рдпрд╣рд╛рдБ рдкреЗрд╕реНрдЯ рдХрд░реВрдБрдЧрд╛, рдФрд░ рдореЗрд░рд╛ рдирдпрд╛ рдЕрдВрдХ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВред

рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╕рдВрд╕реНрдХрд░рдг рдореИрдиреБрдЕрд▓ рдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рд╣реИ рдХрд┐ рд▓реЛрдЧ рдпрд╣рд╛рдВ рдлреАрдбрдмреИрдХ рдЫреЛрдбрд╝ рджреЗрдВ, рдореИрдВрдиреЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИред

рдХреНрд░реЗрдЯ рд░реВрдЯ рд╕реЗ рддрддреНрд╡реЛрдВ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╛ рддреЛ рдЯреЛрдХрд░рд╛ :: рдпрд╛ :: рд╕реЗ рдХреЛрдИ рдЖрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реИред :: рд╡рд╣ рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рджреЛрдиреЛрдВ рдЯреЛрдХрд░рд╛ рд╣реЛрдирд╛ рд╕рдВрднрд╡ рд╣реИ :: рдФрд░ :: рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рджреЛрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдореИрдВ рдЗрд╕реЗ рджреЗрдЦрддрд╛ рд╣реВрдВ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдкрдереЛрдВ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдирдИ рд╕реБрдЭрд╛рдИ рдЧрдИ рдХреНрд░реЗрдЯ рдкреНрд░рдгрд╛рд▓реА рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдкреБрд░рд╛рдиреЗ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рдХреЗрд╡рд▓ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдЕрдм рдЖрдкрдХреЛ рдмрд╛рд╣рд░реА рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЪреАрдЬреЗрдВ рдЙрдиреНрд╣реЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрдЬрд╛рдп рдЕрдзрд┐рдХ рд╕реБрд▓рдн рд╣реИрдВ рд╕рдмрдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╡реЗ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рд╣рд░ рдЬрдЧрд╣ рдкрд░реЛрдХреНрд╖ рд░реВрдк рд╕реЗ рдЖрдпрд╛рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рдЕрдиреНрдп рдЬреЛрдбрд╝ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдХреНрд░реЗрдЯ рд░реВрдЯ рдХреЛ рдХреНрд░реЗрдЯ :: рдХреЗ рдмрдЬрд╛рдп :: рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдореИрдВ рдЗрд╕реЗ рдХреЗрд╡рд▓ :: рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдЗрд╕реЗ рд╕реАрдЦрдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдореЙрдбреНрдпреВрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдирд╣реАрдВ рд╕реАрдЦрд╛ рд╣реИ, рдлрд┐рд░ рднреА рдЗрд╕реЗ рдХреНрд░реЗрдЯ :: рдЕрдзрд┐рдХ рд╕рд╣рдЬ рдЬреНрдЮрд╛рди рдпреБрдХреНрдд рд╢реБрд░реВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рджреЛрдиреЛрдВ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд░реВрдкреЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рдХреНрдпреЛрдВ рди рджреЗрдВ? рдХреНрдпрд╛ рдХреЛрдИ рдХрд╛рд░рдг рд╣реИ рдЬрд┐рд╕рд╕реЗ рджреЛрдиреЛрдВ рдХрд╛ рд╣реЛрдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ? рдЕрдЧрд░ рджреЛрдиреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддреЛ рдореИрдВ рдЙрди рджреЛрдиреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реВрдВред рдпрджрд┐ рдХреЗрд╡рд▓ рдПрдХ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдореЗрд░рд╛ рдЭреБрдХрд╛рд╡ :: рдХреА рдУрд░ рдФрд░ рдЕрдзрд┐рдХ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЖрджреА рд╣реЛ рдЧрдпрд╛ рд╣реВрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдирдП рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЯреЛрдХрд░рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реАрдЦрдирд╛ рдЖрд╕рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ :: рдФрд░ рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдкрдиреА рд╕рдордЭ рдХреЛ рдорд╛рдореВрд▓реА рд░реВрдк рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдРрд╕рд╛ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рддреЛ рд╢рд╛рдпрдж рдореЗрд░реА рдкреНрд░реЗрд░рдгрд╛ рд╕реНрд╡рд╛рд░реНрдереА рд╣реИред

рддреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ, рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ ::, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рджреЛрдиреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЖрджрд░реНрд╢ рд╣реЛрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рдЪреБрдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд▓реЛрдЧ рд╕реЛрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕реЗ рдХреНрд░реЗрдЯ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ :: рдирдП рд╢реМрдХ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реИ рддреЛ рдореИрдВ рдирд╣реАрдВ рдЗрд╕ рдкрд░ рдЖрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реИред

#[path] рдХреЛ рд░рд╕реНрдЯ 2018 рдореЗрдВ рдиреЗрд╕реНрдЯреЗрдб рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? (https://github.com/rust-lang/rust/issues/35016#issuecomment-409185342)

IIUC, рдЕрднреА, рджреЛ рдлрд╝рд╛рдЗрд▓реЗрдВ src/lib.rs рдФрд░ src/bar.rs , рдХреЛрдИ X рд╣реИ рдЬрд┐рд╕реЗ рдЗрд╕рдореЗрдВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

mod foo {
    #[path = "X/bar.rs"]
    mod bar;
}

рдРрд╕рд╛ рдХрд┐ рдореЙрдбреНрдпреВрд▓ bar.rs рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ bar.rs рдХрд╛ рдкрде рд╣рдореЗрд╢рд╛ src/foo/X/bar.rs рдЬреЛ рдЕрдорд╛рдиреНрдп рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ foo рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред

рдЪреВрдВрдХрд┐ рд╣рдо pub(crate) рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫреЗ рдирд╛рдо рдкрд░ рдмрд╛рдЗрдХ рд╢реЗрдбрд┐рдВрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдХреЛрд░ рдЯреАрдо рдЕрднреА рднреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдорд╛рдВрдЧ рд░рд╣реА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЕрдкрдирд╛ рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдФрд░ рдПрдХ рд╕реБрдЭрд╛рд╡ рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдПрдХ рдЯреЛрдХрд░реЗ рдореЗрдВ рдореИрдВрдиреЗ рд▓рд┐рдЦрд╛, рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рд╣рд░ рдЬрдЧрд╣ pub(crate) рдЯрд╛рдЗрдк рдХрд░рдирд╛ рдХреНрд░реБрджреНрдз рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдерд╛ред рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕реЗ рдЫреЛрдЯрд╛ рдХрд░рдХреЗ pub рдФрд░ рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкреНрд░рддреАрдХреЛрдВ рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд░ рджрд┐рдпрд╛, рдЬрд┐рдиреНрд╣реЗрдВ рдЯреЛрдХрд░реЗ рдХреЗ рдмрд╛рд╣рд░ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереАред рдЙрдлрд╝ред ЁЯШЫ (рдореЗрд░реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЯреЛрдХрд░рд╛ рдЖрдВрддрд░рд┐рдХ рдФрд░ рдЕрдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА! рд╢реБрджреНрдзрддрд╛ рдкрд░ рд╕реБрд╡рд┐рдзрд╛ред) рддреЛ рд╣рд╛рдБ, рдореЗрд░рд╛ рджреГрдврд╝ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдХреНрд░реЗрдЯ-рд╕реНрддрд░реАрдп рджреГрд╢реНрдпрддрд╛ рдХреЛ рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рдХреАрд╡рд░реНрдб рдХреЗ рдореИрд╢рдЕрдк рд╕реЗ рдмреЗрд╣рддрд░ рдХреБрдЫ рдЪрд╛рд╣рд┐рдП .

рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реИ рдХрд┐ crate рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдХреАрд╡рд░реНрдб рд╣реИ (рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рджреВрд╕рд░реЛрдВ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдКрдкрд░ рджреЗрдЦреЗрдВ), рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдЕрдиреНрдп рд╕реБрдЭрд╛рдП рдЧрдП рдХреАрд╡рд░реНрдб рдкрд░рд┐рдкреНрд░реЗрдХреНрд╖реНрдп рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдХреЗ рдмрд┐рдВрджреБ рдХреЛ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ рдЯреЛрдХрд░рд╛ рдЬрдбрд╝ рдХреА; рд╕рдорд╕реНрдпрд╛ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдкрд░рд┐рдкреНрд░реЗрдХреНрд╖реНрдп рдореЗрдВ рд╣реИ, рдЕрд░реНрдерд╛рдд рдХреАрд╡рд░реНрдб рдпреБрдХреНрдд рдХреЛрдб рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрдВрдХреНрддрд┐ред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдХреЛрдб "рдЯреЛрдХрд░рд╛ рдЗрд▓рд╛рдХреЗ" рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдпрд╣ рдЙрд╕ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рд╕рдВрджрд░реНрдн рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЗрд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЙрд╕ рдЕрд░реНрде рдореЗрдВ, рдореБрдЭреЗ рдХреАрд╡рд░реНрдб export (рднрд▓реЗ рд╣реА extern рд╕рд╛рде рднреНрд░рдорд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдпрд╣ рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рд╣реИ рдХреНрдпреЛрдВрдХрд┐ extern crate рдорд░ рдЪреБрдХрд╛ рд╣реИ?) export struct Foo; рдмрд╣реБрдд рдкрдардиреАрдп рджрд┐рдЦрддрд╛ рд╣реИ, рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ (рдИрд╢) рдХреЗ рд╕рд╛рде рд╕рдВрд░реЗрдЦрд┐рдд рд╣реЛрддрд╛ рд╣реИред рдореБрдЭреЗ рдЗрд╕ RFC рдпрд╛ рдЕрдиреНрдп рдЬрдЧрд╣реЛрдВ рдкрд░ рдХреАрд╡рд░реНрдб рдХреЗ рд░реВрдк рдореЗрдВ export рдХрд╛ рдХреЛрдИ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдорд┐рд▓рд╛ред рддреЛ рд╡рд╣рд╛рдБ рднреА рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЬрд╛ рд░рд╣рд╛ рд╣реИред

рдкреВрд░реНрдгрддрд╛ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдореЗрдВ @seanmonstar , @johnthagen , et al рджреНрд╡рд╛рд░рд╛ рд▓рд╛рдП рдЧрдП рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

export use crate::generic::{Combine, Func};

// Or even better using relative paths
export use ::generic::{Combine, Func};
export struct Bar {
    export foo: crate::Foo,
}

export struct Baz(export crate::Foo);
use crate::menu::{Sound, Volume};

export mod color;

// ...

/// A type for storing text and an associated color it should
/// be drawn as.
export struct ColoredText {
    export color: types::Color,
    export text: &'static str,
}

рдЬреЛ рдХреБрдЫ рднреА рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ, рдореИрдВ рдЖрдЧ рд╕реЗ pub(crate) рдХреЛ рдорд╛рд░рдиреЗ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд╣реВрдВред рдореИрдВ crate , FWIW рднреА рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред

@parasyte рдореИрдВ export рд╕рд╛рде рдЬреЛ рд╕рдорд╕реНрдпрд╛ рджреЗрдЦрддрд╛ рд╣реВрдВ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕реЗ "рдпрд╣ рдЯреЛрдХрд░рд╛ рдирд┐рд░реНрдпрд╛рдд ____" рдХреЗ рд╕рд╛рде рднреНрд░рдорд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЬреЛ рдХрд┐ pub рдХреЗ рд▓рд┐рдП рд╣реИ), рд▓реЗрдХрд┐рди рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдХрд┐рд╕ рддрд░рд╣ рд╕реЗ рд╡рдХрд╛рд▓рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЕрд▓рдЧ рдкрд░рд┐рдкреНрд░реЗрдХреНрд╖реНрдпред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реЛрдЧ рд╕рд╣рдордд рд╣реИрдВ рдХрд┐ pub(crate) рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдХрдИ рд▓реЛрдЧреЛрдВ рдиреЗ рдЪрд┐рдВрддрд╛ рдЬрддрд╛рдИ рд╣реИ рдХрд┐ рд╕рдВрдЬреНрдЮрд╛ рдХреАрд╡рд░реНрдб crate , рдЬреЛ рдЕрдм рдЕрдиреНрдп рд╕рдВрджрд░реНрднреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдПрдХ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд░реВрдк рдореЗрдВ рдЭрдХрдЭреЛрд░ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдХрд┐ рд╣рдордиреЗ рдЕрдиреНрдп (рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдирдП) рдХреАрд╡рд░реНрдб рдкрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рд╣реИ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░рд╕реНрдЯ 2018 рдХреЗ рдкрддреНрдерд░ рдореЗрдВ рд╕реЗрдЯ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдпрд╣ рд╕рдордп рдХрд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдЙрдкрдпреЛрдЧ рд╣реЛрдЧрд╛ред

рдореИрдВрдиреЗ рдХреЛрдИ "рдЖрдзрд┐рдХрд╛рд░рд┐рдХ" рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рд╕реБрдиреА рд╣реИ рдпрджрд┐ рдпрд╣ рдЕрднреА рднреА рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рдЦреБрд▓рд╛ рд╣реИ?

@parasyte рдХреЗ рд╕реБрдЭрд╛рд╡ рдХреА рддрд░реНрдЬ рдкрд░ рдХреБрдЫ рдФрд░ рд╢рдмреНрджреЛрдВ рдХреЛ рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд╣рд┐рдд рдореЗрдВ (рдореИрдВ @johnthagen рд╕реЗ рд╕рд╣рдордд export pub рддреБрд▓рдирд╛ рдореЗрдВ pub(crate) ):

shared use ::generic::{Combine, Func};
shared struct ColoredText {
    export color: types::Color,
    export text: &'static str,
}
global use ::generic::{Combine, Func};
global struct ColoredText {
    export color: types::Color,
    export text: &'static str,
}

рд╣рдо рдЬрд╛рд╡рд╛ рдХреЗ рдирдХреНрд╢реЗрдХрджрдо рдкрд░ рднреА рдЪрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ protected рдЬреИрд╕реЗ рдХреБрдЫ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдордЭрдиреЗ рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЖрд╕рд╛рди рд╣реИред local (рдЯреЛрдХрд░рд╛-рд╕реНрдерд╛рдиреАрдп рдХреЗ рдЕрд░реНрде рдореЗрдВ) рднреА рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ global рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рднреНрд░рдорд┐рдд рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрдо рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, local _file_-local рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)ред

рд▓реЛрдЧ pub(cr) рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХреЗрд╡рд▓ cr рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕рд╛ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВрдЧреЗ?

crate рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИред рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдХреАрд╡рд░реНрдб рд╣реИ, extern crate рдореЗрдВ рдЗрд╕рдХрд╛ рдкрд┐рдЫрд▓рд╛ рдЙрдкрдпреЛрдЧ рд╕рдорд╛рдкреНрдд рд╣реЛ рд░рд╣рд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рджреГрд╢реНрдпрддрд╛ pub(crate) ред

рдпрджрд┐ рдЖрдк рд╡рд┐рд╢реЗрд╖рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЯреЛрдХрд░рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдереЛрдбрд╝рд╛ рд╕рд╛ рднреЗрдВрдЧрд╛рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рд╡рд┐рдЪрд▓рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ред 'рдШрд░' рдЬреИрд╕реЗ рд╢рдмреНрджреЛрдВ рдХрд╛ рдкреНрд░рдпреЛрдЧ рд╡рд┐рд╢реЗрд╖рдг рдХреЗ рд░реВрдк рдореЗрдВ рдареАрдХ рд╣реА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред IANAрдЕрдВрдЧреНрд░реЗрдЬрд╝реА рдкреНрд░реЛрдлреЗрд╕рд░.

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдЯреЛрдХрд░рд╛ рджреГрд╢реНрдпрдорд╛рди рд╡рд╕реНрддреБ рдХрд╛ рдкреБрди: рдирд┐рд░реНрдпрд╛рдд рдХрд░рдирд╛ рд╕реБрдкрд░ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рдирд╣реАрдВ рд╣реИред рд╡реНрдпрдХреНрддрд┐рдЧрдд рддреМрд░ рдкрд░ рдореИрдВ рд╣реА рдХрднреА рдореЙрдбреНрдпреВрд▓ рдЬреЛ рдпрд╣ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЖрдк рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд╛ рдПрдХ рд╕реАрдзрд╛ рдорд╛рддрд╛ рдкрд┐рддрд╛ рдореЗрдВ рдПрдХ рдЖрдЗрдЯрдо reexported рд╣реИ (рд╢рд╛рдпрдж) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ self рдХреЗ рдмрдЬрд╛рдп crate (seanmonstar рдХреЗ рд╣реЛрддреЗ рд╣реБрдП рднреА рдХреЛрдб рдЖрдпреЛрдЬрди рдХреЗ рдорд╛рдорд▓реЗ ) рдЙрджрд╛.

    mod detail {
        crate struct Foo;
    }

    crate use self::detail::Foo;

рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд┐рд░рдкреЗрдХреНрд╖ рдкрде рдХреЗ рд╕рд╛рде рд╕рдВрдпреБрдХреНрдд рджреГрд╢реНрдпрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЯреЛрдХрд░рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ (рдлрд┐рд░ рд╕реЗ рд╕реАрдирдореЛрдирд╕реНрдЯрд╛рд░ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛) рдЕрдзрд┐рдХ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рджрд┐рдЦрддрд╛ рд╣реИ: crate struct Foo(crate crate::Bar); рдХреЗ рд╡рд┐рдкрд░реАрдд pub(crate) struct Foo(pub(crate) ::Foo); ред рдореЗрд░реА рдПрдХрдорд╛рддреНрд░ рдЖрд╢рд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдирд┐рд░реНрдорд╛рдг рд▓реЛрдХрдкреНрд░рд┐рдп рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╕рдВрдХреНрд░рдордг рд╕реЗ рдпрд╣ рдЯреЛрдХрд░рд╛ рд╕реВрдк рдирд╣реАрдВ рдмрдиреЗрдЧрд╛ред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЖрдпрд╛рдд рдХрд░рдХреЗ рдЗрд╕рд╕реЗ рдмрдЪ рд╕рдХрддреЗ рд╣реИрдВ:

use crate::Bar;

crate struct Foo(crate Bar);

рдореБрдЭреЗ share рдпрд╛ рдРрд╕рд╛ рдХреБрдЫ рдХрд╛ рд╕реБрдЭрд╛рд╡ рдкрд╕рдВрдж рд╣реИред give , provide , deliver , offer , serve , post , forward .. . рдпрджрд┐ рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖рдг рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рддреЛ рдЗрди рд╕рднреА рдХреЛ рдкреНрд░рддреНрдпрдп рд╕реЗ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: shared , givable , providable , рдЖрджрд┐ред

рдПрдХ рдкрд▓ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП, ES6 рдореЗрдВ рднрд╛рд╖рд╛ рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рдкреИрдХреЗрдЬ рдмрдирд╛рдо рдореЙрдбреНрдпреВрд▓ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рднреА рдирд╣реАрдВ рд╣реИред рдХреЗрд╡рд▓ рдореЙрдбреНрдпреВрд▓ рд╣реИрдВред ES6 рдореЗрдВ export рдХреАрд╡рд░реНрдб рд╣рдореЗрд╢рд╛ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рд╕рдВрджрд░реНрдн рдирд┐рд░реНрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ; рдпрд╣ рдлрд┐рд░ рдХрд┐рд╕реА рдЕрдиреНрдп рдореЙрдбреНрдпреВрд▓ рдкрд░ import рдЬреЛ рдкрде рджреНрд╡рд╛рд░рд╛ рд╕рдВрджрд░реНрднрд┐рдд рд╣реИ рдпрджрд┐ рд╡рд╣ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред

рдпрд╣ рдХреНрд░рдорд╢рдГ pub рдФрд░ use рд╕реЗ рдмрд╣реБрдд рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИред рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ export рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдХреБрдЫ рднреНрд░рдо рдХреА рд╕реНрдерд┐рддрд┐ рдЙрддреНрдкрдиреНрди рд╣реЛрдЧреАред pub(crate) рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рддрд░рд╣ рдХрд╛ рдЖрд▓рд╛ рд╣реИред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЕрддреАрдд рдореЗрдВ рдХреЗрд╡рд▓ pub рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЪреБрдирд╛ рдерд╛ред ;(

crate рджреГрд╢реНрдпрддрд╛ рд╕рдВрд╢реЛрдзрдХ рдХрд╛ рдореБрджреНрджрд╛ #53120 рдкрд░ рдирд┐рдХрд╛рд▓рд╛ рдЧрдпрд╛ рд╣реИред рдЖрдЧреЗ рдХреА рдмрд╣рд╕ рдФрд░ рдлреИрд╕рд▓реЗ рд╡рд╣реАрдВ рдкрд░ рдЪрд▓рддреЗ рд░рд╣рдиреЗ рдЪрд╛рд╣рд┐рдПред

mod.rs рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдореБрджреНрджреЗ рдХреЛ #53125 рдкрд░ рдирд┐рдХрд╛рд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЖрдЧреЗ рдХреА рдмрд╣рд╕ рдФрд░ рдлреИрд╕рд▓реЗ рд╡рд╣реАрдВ рдкрд░ рдЪрд▓рддреЗ рд░рд╣рдиреЗ рдЪрд╛рд╣рд┐рдПред

extern crate рдореВрд▓реНрдпрд╣реНрд░рд╛рд╕ рдХреЗ рдореБрджреНрджреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде use crate_name::foo рдФрд░ crate_name::foo Just WorkтДв рдХреЛ https://github.com/rust-lang/rust/ рдкрд░ рдирд┐рдХрд╛рд▓рд╛ рдЧрдпрд╛ рд╣реИред

рдореЙрдбреНрдпреВрд▓ рдкрде рдкреНрд░рдгрд╛рд▓реА рдЪреБрдирдиреЗ рдХрд╛ рдореБрджреНрджрд╛ https://github.com/rust-lang/rust/issues/53130 рдкрд░ рдирд┐рдХрд╛рд▓рд╛ рдЧрдпрд╛ рд╣реИ

рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рд╕рднреА рдмрд┐рдЯреНрд╕ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореБрджреНрджреЛрдВ рдореЗрдВ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рдмрд╛рдж; рдореИрдВ рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЗрд╕реЗ рдмрдВрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

@рд╕реЗрдВрдЯреНрд░рд┐рд▓ : https://doc.rust-lang.org/unstable-book/print.html#extern_prelude рдпрд╣рд╛рдВ рд▓рд┐рдВрдХреНрд╕ред рдЗрд╕ рдкрд░ рдХрд╣рд╛рдВ рдЪрд░реНрдЪрд╛ рд╣реЛ рд░рд╣реА рд╣реИ? рдЕрдЧрд░ рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЧреБрдо рд╣реИ, рддреЛ рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ рдУрдкреА рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ?

@ рд╕рдирдордИ-рдПрдирдПрд▓ рдХреНрдпрд╛ рдЖрдк рдореЗрд░реА рдпрд╛рджрджрд╛рд╢реНрдд рдХреЛ рддрд╛рдЬрд╝рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ "рдмрд╛рд╣рд░реА рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛" рдХреНрдпрд╛ рдереА?

рдЕрдЧрд░ рдпрд╣ рд╕рд┐рд░реНрдл use some_crate::foo::bar; рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ рддреЛ рд╡рд╣ https://github.com/rust-lang/rust/issues/53128 рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

рдЗрд╕рдореЗрдВ рд╕реЗ рдХреБрдЫ рдкрд░ https://github.com/rust-lang/rust/issues/54230 рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ

@ рд╕рдирдорд╛рдИ-рдПрдирдПрд▓ рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдирд┐рджрд╛рди рдХреЗ рд▓рд┐рдП рд╣реИред

extern_prelude рд╣реИ crate_name::foo::bar рдХреЗ рдмрд╛рд╣рд░ use (рдЖрдпрд╛рдд) рдкрдеред

@рд╕реЗрдВрдЯреНрд░рд┐рд▓

рдХреНрдпрд╛ рдЖрдк рдореЗрд░реА рдпрд╛рджрджрд╛рд╢реНрдд рдХреЛ рддрд╛рдЬрд╝рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ "рдмрд╛рд╣рд░реА рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛" рдХреНрдпрд╛ рдереА?

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, "рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛" рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЙрди рд╕рднреА рдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдкреВрд░реЗ рдЯреЛрдХрд░реЗ рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ рд╣реИрдВ рдФрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдЬреБрдбрд╝реЗ рдирд╣реАрдВ рд╣реИрдВред (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдирдореЗрдВ рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╣реИрдВред)

@petrochenkov рддреЛ рдЙрд╕рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ "

@alexreg
--extern рдХрд┐рдП рдЧрдП рдЯреЛрдХрд░реЗ рдкреВрд░реЗ рдЯреЛрдХрд░реЗ рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ рд╣реИрдВ, рдЬрдмрдХрд┐ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдЬреБрдбрд╝реЗ рдирд╣реАрдВ рд╣реИрдВред

рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдЗрди рд╕реЛрдиреЗ рдХреА рдбрд▓реА, рдЪрд╛рд╣реЗ рдХрд┐рддрдиреА рднреА рдЕрд╕реНрдерд┐рд░ рдХреНрдпреЛрдВ рди рд╣реЛ, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЗ рдХрд┐рд╕реА рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕реНрд░реЛрдд рдореЗрдВ рджрд░реНрдЬ рдХреА рдЬрд╛рддреА рд╣реИред рдИрдПрд╕рдкреА рдпрджрд┐ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЗ рдмрд╛рд╣рд░реА рдЙрд▓реНрд▓реЗрдЦ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЕрд╕реНрдерд┐рд░ рдкреБрд╕реНрддрдХ рдореЗрдВред рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЗрди рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрд░рдХреНрд╖рдХреЛрдВ рдХреЛ рдРрд╕рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╣рд╛рд▓рд╛рдВрдХрд┐ред

@petrochenkov рдзрдиреНрдпрд╡рд╛рдж, рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред

рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рд╕рднреА рдмрд┐рдЯреНрд╕ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореБрджреНрджреЛрдВ рдореЗрдВ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рдмрд╛рдж; рдореИрдВ рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЗрд╕реЗ рдмрдВрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

@Centril рд╡рд░реНрддрдорд╛рди рдмреАрдЯрд╛ рд╕рдВрд╕реНрдХрд░рдг рд▓рд┐рдВрдХ рдореЗрдВ рдЯреНрд░реИрдХрд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛рдПрдБ рдпрд╣рд╛рдБред рдХреНрдпрд╛ рдЖрдк рдореВрд▓ рдЯрд┐рдкреНрдкрдгреА рдХреЛ рдирд╡реАрдирддрдо рдЬрд╛рдирдХрд╛рд░реА рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВрдЧреЗ рддрд╛рдХрд┐ рд▓реЛрдЧреЛрдВ рдХреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рдкрдбрд╝реЗ?

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

cuviper picture cuviper  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

defuz picture defuz  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

zhendongsu picture zhendongsu  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

pedrohjordao picture pedrohjordao  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mcarton picture mcarton  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ