рдпрд╣ RFC рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдк-рдЯреНрд░реИрдХрд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛ рд╣реИ "рдкрде рдФрд░ рджреГрд╢реНрдпрддрд╛ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдФрд░ рд╕реБрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░реЗрдВ" (рд░рд╕реНрдЯ-рд▓реИрдВрдЧ/rfcs#2126)
рджреГрд╢реНрдпрддрд╛ рд╕рдВрд╢реЛрдзрдХ рдХреЗ рд░реВрдк рдореЗрдВ crate
рдХреЗ рдкреНрд░рд╢реНрди рд╕реЗ рдирд┐рдкрдЯрдирд╛ред
рдЕрдирд╕реБрд▓рдЭреЗ рдкреНрд░рд╢реНрди:
struct Foo(crate ::bar)
рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ?рджреГрд╢реНрдпрддрд╛ рд╕рдВрд╢реЛрдзрдХ рдХреЗ рд░реВрдк рдореЗрдВ crate
рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ:
pub(extern)
рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореИрдВ рджреГрд╢реНрдпрддрд╛ рд╕рдВрд╢реЛрдзрдХ рдХреЗ рд░реВрдк рдореЗрдВ crate
рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд╣реВрдВ рдФрд░ рдореИрдВ рдпрд╣рд╛рдВ @stepancheg рдХреА рдЯрд┐рдкреНрдкрдгреА рд╕рд╛рдЭрд╛ рдХрд░рддрд╛ рд╣реВрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЫреЛрдЯреА рдФрд░ рд╕рдЦреНрдд рджреГрд╢реНрдпрддрд╛ рдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ crate
рдмрд╕ рдпрд╣реА рдХрд░рддрд╛ рд╣реИред
рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ pub(crate)
рд▓рд┐рдЦрдиреЗ рдХреЗ рд╕рд╛рде рдареАрдХ рд╣реВрдВ, рдЗрд░рд╛рджрд╛ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд▓рдЧрддрд╛ рд╣реИред
@johnthagen рджреНрд╡рд╛рд░рд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдЙрджрд╛рд╣рд░рдг рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджреЗрдЦрдиреЗ рдореЗрдВ рджрд░реНрджрдирд╛рдХ рд╣реИ ( 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,
}
crate mod color;
рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд▓рдЧрддрд╛ рд╣реИ, рдЖрдкрдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕ рдкрд░ рдереЛрдбрд╝рд╛ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╡рд╣рд╛рдВ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред
рдЗрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рдмрд╣реБрдд рд╕реА- static
-esque- рд╕рд╣рдЬ рд░реВрдк рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ рдЕрд▓рдЧ рд╣реИрдВред
@johnthagen рдХреЗ рдХрд╛рд░рдг рдЙрджрд╛рд╣рд░рдг рдореЗрд░реЗ рд▓рд┐рдП рдЦрд░рд╛рдм рдирд╣реАрдВ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рд╕рдорд░реВрдкрддрд╛ рдкрд╕рдВрдж рд╣реИред рдпрд╣ рдПрдХ рддрд░рд╣ рд╕реЗ рдЦреВрдмрд╕реВрд░рдд рд╣реИред
рдпрджрд┐ рдХреА рдкрдардиреАрдпрддрд╛:
crate struct ColoredText {
crate color: types::Color,
crate text: &'static str,
}
рдПрдХ рд╕рдорд╕реНрдпрд╛ рдмрди рдЬрд╛рддреА рд╣реИ; рдлрд┐рд░ рдПрдХ рдЖрдИрдбреАрдИ/рд╕рдВрдкрд╛рджрдХ рдЬреЛ рдЬрдВрдЧ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рд╕рдордЭрддрд╛ рд╣реИ, рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рдВрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ crate
рдЯреЛрдХрди рдХреЛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдВрддрд░ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рд╛рдлрд╝ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
crate
рджреГрд╢реНрдпрддрд╛ рд╕рдВрд╢реЛрдзрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдЬреАрдм рд╣реИ: рдпрд╣ рдПрдХ рдРрд╕реА рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЬрдВрдЧ-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЬрдВрдЧ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдЯрд▓рд┐рди рдФрд░ рд╕реА# internal
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ pub
рдХреЛ crate-visible
рдХреЗ рд▓рд┐рдП рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдФрд░ рджреБрдирд┐рдпрд╛ рдХреЗ рджреГрд╢реНрдпрдорд╛рди рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдбрд░рд╛рд╡рдирд╛ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЬреИрд╕реЗ pub*
рдпрд╛ pub!
ред
рдЗрд╕реЗ рдкрд╣рд▓реЗ рднреА рд▓рд╛рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЬреЛ рдореВрд▓ рдореБрджреНрджреЗ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣реЗ рд╣реИрдВ рд╡реЗ рд╣реИрдВ:
crate
рдПрдХ рд╕рдВрдЬреНрдЮрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ pub(crate)
рд▓рдВрдмрд╛ рдФрд░ рдЕрдЬреАрдм рд▓рдЧ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рдХреБрдЫ рдХреЗ рд╕рд╛рде рдмрджрд▓рдиреЗ рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд┐рд╢реЗрд╖рдг рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рдерд╛, рдЗрд╕рд▓рд┐рдП рд╡реНрдпрд╛рдХрд░рдгрд┐рдХ рд░реВрдк рд╕реЗ рдпрд╣ рдмреЗрд╣рддрд░ рдкреНрд░рд╡рд╛рд╣рд┐рдд рд╣реБрдЖредcrate
рдЕрдм "рдЗрд╕-рдХреНрд░реЗрдЯ" рдЖрдпрд╛рдд рдХреЗ рд▓рд┐рдП рдПрдВрдХрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ "рдЬрд╣рд╛рдБ рднреА рдЗрд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рдЗрд╕ рдЯреЛрдХрд░реЗ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ" рд╕реЗ рдХреБрдЫ рдЕрд▓рдЧ рд╣реИред// Here `crate` means the root of this crate.
use crate::menu::{Sound, Volume};
// Here, `crate` means: export crate::game::color
// The `crate` is referring to `color`, not the root.
crate mod color;
...
/// A type for storing text and an associated color it should
/// be drawn as.
// Same potential confusion as `crate mod color`
crate struct ColoredText {
crate color: types::Color,
crate text: &'static str,
}
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, рдХреЛрдЯрд▓рд┐рди/рд╕реА# рд╕реЗ @matklad рдХреЗ internal
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред
use crate::menu::{Sound, Volume};
internal mod color;
...
/// A type for storing text and an associated color it should
/// be drawn as.
internal struct ColoredText {
internal color: types::Color,
internal text: &'static str,
}
рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ internal
рд╕рд╣реА рдХреАрд╡рд░реНрдб рд╣реИ (рд░рд╕реНрдЯ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрддрд╛рдХреНрд╖рд░ рд╣реИ, рдФрд░ int
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ C/C++/Java рднреНрд░рдо рд╕реЗ рднрд░рд╛ рд╣реИ), рд▓реЗрдХрд┐рди рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд╕реЛрдЪрддрд╛ рд╣реВрдВ рдХрд┐ рджреВрд╕рд░рд╛ рдЙрджрд╛рд╣рд░рдг рддреБрд░рдВрдд рдЕрдзрд┐рдХ рдкрдардиреАрдп рд╣реИред
рдореБрдЭреЗ рдпрд╣ рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ crate
рджреГрд╢реНрдпрддрд╛ рдХреАрд╡рд░реНрдб рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рд╕реЗ рд░рд╕реНрдЯ рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реЛрдЧрд╛ред рдЕрдЧрд░ рд╣рдо рдореЗрдВ рд╕реЗ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдЗрди рдзрд╛рдЧреЛрдВ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╕реНрдЯ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рдХрд▓реНрдкрдирд╛ рдХрд░рдиреА рд╣реЛрдЧреА рдХрд┐ рдпрд╣ рд░рд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдирдП рд▓реЛрдЧреЛрдВ рдХреА рднреА рдпрд╛рддреНрд░рд╛ рдХрд░реЗрдЧрд╛ред
pub(crate)
рдХрд╛ рдереЛрдбрд╝рд╛ рд▓рдВрдмрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЗрддрдирд╛ рдмрдбрд╝рд╛ рд╕реМрджрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ pub
рдЖрдЗрдЯрдо рдЬреЛ рдХреНрд░реЗрдЯ рдХреЗ рдмрд╛рд╣рд░ рдкрд╣реБрдВрдЪ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИрдВ, рдХреЗ рд▓рд┐рдП рдЪреЗрддрд╛рд╡рдиреА/рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рдмрди рд░рд╣реЗ рдереЗред рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЕрдЧрд░ рдореЗрд░реЗ рдкрд╛рд╕ pub(crate) struct Foo { ... }
рд╣реЛрддрд╛, рддреЛ рд╕рдВрдХрд▓рдХ рдпрд╣ рдорд╣рд╕реВрд╕ рдХрд░ рд╕рдХрддрд╛ рдерд╛ рдХрд┐ $#$4 impl Foo
#$ рдореЗрдВ рд╕рднреА pub fn
s рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рдореБрдЭреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд░рд╕реНрдЯ 2015 рдореЗрдВ рд╕рд┐рд░реНрдл рд╡реНрдпрд╕реНрдд рдХрд╛рдо рд╣реИ рдпрджрд┐ рдореИрдВ рдХрднреА рднреА pub struct Foo
рд╕реЗ pub(crate) struct Foo
рддрдХ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рд╕рдВрдХрд▓рдХ рдХреИрд╕реЗ рд╕рднреА рдЬрдЧрд╣реЛрдВ рдкрд░ рдЪрд┐рд▓реНрд▓рд╛рддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдЕрдиреНрдп pub fn
s рдЕрдЪрд╛рдирдХ pub(crate)
рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдореМрдЬреВрдж рд╣реИ, рдЬрдм рд╕рдорд╕реНрдпрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рджреВрд╕рд░рд╛ рдкреНрд░рдХрд╛рд░ рднреА pub(crate)
рд╣реИред
рдореБрдЭреЗ pub
рдХреЛ рдХреНрд░реЗрдЯ-рдкрдмреНрд▓рд┐рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдФрд░ export
рдпрд╛ рд╡рд┐рд╢реНрд╡-рджреГрд╢реНрдпрдорд╛рди рдирд┐рд░реНрдпрд╛рдд рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ @matklad рдХрд╛ рд╡рд┐рдЪрд╛рд░ рднреА рдорд┐рд▓рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрдбрд╝рд╛ рдЕрдВрддрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?
pub
рдХреЛ рдХреНрд░реЗрдЯ-рдкрдмреНрд▓рд┐рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░ рдХрд░рдирд╛ рдФрд░ рд╡рд┐рд╢реНрд╡-рдЬрдирддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдИ рджреГрд╢реНрдпрддрд╛ рдЬреЛрдбрд╝рдирд╛ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдкрд╣рд▓реЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдерд╛ред рдореМрдЬреВрджрд╛ рд╢рдмреНрджрд╛рд░реНрде рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдмрджрд▓рд╛рд╡ рдХреЛ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рднреА рдмрд╣реБрдд рдХрдареЛрд░ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рдерд╛, рдпрд╣реА рд╡рдЬрд╣ рд╣реИ рдХрд┐ pub
рдЕрдм рдЗрд╕рдХрд╛ рд╡рд░реНрддрдорд╛рди рдЕрд░реНрде рд░рдЦ рд░рд╣рд╛ рд╣реИред
рдЬреЛ рдХрдо рдЪрд░реНрдЪрд╛ рдФрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, pub
рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдХ рд▓рд┐рдВрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреБрдирд░реНрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░ рд░рд╣рд╛ рдерд╛ред рд╢рд╛рдпрдж рд╣рдо рд▓рд┐рдВрдЯ рдХреЛ " pub
рдкрд░ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдВ рдЬреЛ рдЯреЛрдХрд░реЗ рдХреЗ рдмрд╛рд╣рд░ рдкрд╣реБрдВрдЪ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИ" рд╕реЗ " pub
рдкрд░ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдВ рдЬреЛ рдЯреЛрдХрд░рд╛ рдХреЗ рдмрд╛рд╣рд░ рдкрд╣реБрдВрдЪ рдпреЛрдЧреНрдп рд╣реИ " рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рд╡реИрдХрд▓реНрдкрд┐рдХ pub(extern)
рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ export
рдХреАрд╡рд░реНрдбред рдпрд╣реА рд╣реИ, рдХрд┐рд╕реА рднреА рд╢рдмреНрджрд╛рд░реНрде рдХреЛ рди рдмрджрд▓реЗрдВ, рдмрд╕ рдПрдХ рд▓рд┐рдВрдЯ-рд╕рд╛рдЗрд▓реЗрдВрд╕рд┐рдВрдЧ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЬреЛрдбрд╝реЗрдВред
рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдХрдо рд╡рд┐рдШрдЯрдирдХрд╛рд░реА рд╣реЛрдЧрд╛, рдЗрд╕ рдзрд╛рд░рдгрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд┐ рдЯреЛрдХрд░рд╛-рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд╕реНрддреБрдУрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдо рд╡рд┐рд╢реНрд╡-рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд╕реНрддреБрдПрдВ рд╣реИрдВред рдпрд╣ рджреГрд╢реНрдпрддрд╛ рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд╕рд╛рде рд╕рднреА рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп pub
рдХреЗ рд╕рд╣рдЬ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕реВрдХреНрд╖реНрдо рд░реВрдк рд╕реЗ рдЧрд▓рдд) рдЕрд░реНрде рдХреЛ "рд╡рд░реНрддрдорд╛рди рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдирд┐рд░реНрдпрд╛рдд" рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░реЗрдЧрд╛ред
рд░рд╕реНрдЯ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрддрд╛рдХреНрд╖рд░ рд╣реИ, рдФрд░
int
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ C/C++/Java рднреНрд░рдо рд╕реЗ рднрд░рд╛ рд╣реИ
рдПрдлрдбрдмреНрд▓реНрдпреВрдЖрдИрдбрдмреНрд▓реНрдпреВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рджреЛ рд╡рд░реНрдгреЛрдВ рдХреЛ рдмрдЪрд╛рддрд╛ рд╣реИ, рдЕрдЧрд░ рд╣рдо internal
рдХреЛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ "рд╕рд╣реА" рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд╛рдо рд╕рдВрднрд╡рддрдГ, extern
рдЕрд▓ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдЧрд╛, intern
рд╣реЛрдЧрд╛ред рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╡рд╣ рднреА рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╕рдордЭреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА, рднрд┐рдиреНрди рдЕрд░реНрде рд╡рд╛рд▓реА рд╕рдВрдЬреНрдЮрд╛ рд╣реИред рдУрд╣ рдЕрдЪреНрдЫрд╛ред
@glaebhoerl intern
рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИ! тЭдя╕П
extern
рдХреЗ рд╕рд╛рде рд╕рдорд░реВрдкрддрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫреА рд╣реИ, рдФрд░ рдЖрдИрдПрдордУ intern
рдХреЗ рд╕рдВрдЬреНрдЮрд╛ рд░реВрдк рдХреЗ рд╕рд╛рде рд╕рдВрднрд╛рд╡рд┐рдд рднреНрд░рдо рдХреЛ рдмрд╣реБрдд рдХрдо рдХрд░ рджреЗрдЧрд╛ред
рдпрд╣ рдЫреЛрдЯрд╛ рд╣реИ, ( crate
рд╕реЗ рдХреЗрд╡рд▓ 1 рдЕрдзрд┐рдХ рд╡рд░реНрдг) рдФрд░ use crate::
рд╕реЗ рдЯрдХрд░рд╛рддрд╛ рдирд╣реАрдВ рд╣реИред
рдЕрджреНрдпрддрди рдЙрджрд╛рд╣рд░рдг рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
use crate::menu::{Sound, Volume};
intern mod color;
...
/// A type for storing text and an associated color it should
/// be drawn as.
intern struct ColoredText {
intern color: types::Color,
intern text: &'static str,
}
рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡рд┐рд╢реЗрд╖рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕рдВрдЬреНрдЮрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреНрдпрд╛ рд╣реИ?
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ: рдРрд╕реЗ рдмрд╣реБрдд рд╕реЗ рд╕рдВрдЬреНрдЮрд╛рдПрдВ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рд╢реЗрд╖рдг рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдПред рдПрдХ рдШрд░реЗрд▓реВ рдмрд┐рд▓реНрд▓реА, рдПрдХ рдХрдВрдкреНрдпреВрдЯрд░ рдорд╛рдЙрд╕, рдПрдХ рдХрдВрдкреНрдпреВрдЯрд░ рдбреЗрд╕реНрдХ, рдЖрджрд┐... рд╡рд┐рд╢реЗрд╖рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА _рдЕрдВрдЧреНрд░реЗрдЬреА рд╕рдВрдЬреНрдЮрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ Google рдЦреЛрдЬ рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдХреБрдЫ рднреА рдЧрд▓рдд рдирд╣реАрдВ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рднреА рд╕рдВрдЬреНрдЮрд╛рдПрдВ рд╡рд┐рд╢реЗрд╖рдг рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рд╣реИрдВред
рдЪрд▓реЛ рдпрд╣ рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ:
_рдХреНрд░реЗрдЯ рдореЙрдб рд╣реИрд▓реЛ;_ рд╣реИрд▓реЛ рдирд╛рдо рдХрд╛ рдПрдХ рдХреНрд░реЗрдЯ рдореЙрдбреНрдпреВрд▓, рдареАрдХ рд▓рдЧрддрд╛ рд╣реИред
_рдХреНрд░реЗрдЯ fn рд╡рд░реНрд▓реНрдб() {}_ рд╡рд░реНрд▓реНрдб рдирд╛рдо рдХрд╛ рдПрдХ рдХреНрд░реЗрдЯ рдлрдВрдХреНрд╢рди, рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИред
_рдХреНрд░реЗрдЯ рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдлреВ;_ рдлреВ рдирд╛рдо рдХрд╛ рдПрдХ рдХреНрд░реЗрдЯ рд╕реНрдЯреНрд░рдХреНрдЪрд░, рдареАрдХ рд▓рдЧрддрд╛ рд╣реИред
_рдХреНрд░реЗрдЯ рдПрдирдо рдмрд╛рд░ {}_ рдмрд╛рд░ рдирд╛рдо рдХрд╛ рдПрдХ рдХреНрд░реЗрдЯ рдПрдирдо, рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИред
_рдХреНрд░реЗрдЯ рдЯреНрд░реЗрдЯ рдмрд╛рдЬрд╝ {}_ рдмрд╛рдЬрд╝ рдирд╛рдо рдХреА рдХреНрд░реЗрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛, рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИред
_рдХреНрд░реЗрдЯ рдпреВрдЬрд╝ рд╕реЗрд▓реНрдл::рд▓реЛрдХрд▓::рдлреВ;_ рдПрдХреЗ, рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛, рдПрдХ рдЯреЛрдХрд░рд╛ рдЙрдкрдпреЛрдЧ? рдЖрдк рдЗрд╕реЗ рдлреВ рдирд╛рдордХ рдЯреЛрдХрд░рд╛ рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╡рд╕реНрддреБ рдХреЗ рд░реВрдк рдореЗрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдкреИрдЯрд░реНрди рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИред
рдкрде рдХреА рдЬрдбрд╝ рдХреЗ рд░реВрдк рдореЗрдВ рдЯреЛрдХрд░рд╛ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рд╕рдВрд░рдЪрдирд╛ рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рд╕рд╛рдордиреЗ рдФрд░ рдЗрд╕рд╕реЗ рднреА рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рдпрд╣ рдЕрдЬреАрдм рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдЬрдмрдХрд┐ рдЯреЛрдХрд░рд╛ рд╕рд╣реА рдирд╣реАрдВ рд╣реИ, рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реИ рдХрд┐ 'рд╕рдВрдЬреНрдЮрд╛ рд╣реЛрдирд╛' рдПрдХ рдирд┐рд░реНрдгрд╛рдпрдХ рдХрд╛рд░рдХ рд╣реИред
рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рд╣реА рдЕрд╕рд╛рдорд╛рдиреНрдп рд╣реИред рдХреЛрдИ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рд╕рдВрдЬреНрдЮрд╛рдУрдВ рдХреЛ рдЯрд╛рдЗрдк рд╕рдВрд╢реЛрдзрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
@рд╕реЗрдВрдЯреНрд░рд┐рд▓
рдПрдХ рд╕рдорд╕реНрдпрд╛ рдмрди рдЬрд╛рддреА рд╣реИ; рдлрд┐рд░ рдПрдХ рдЖрдИрдбреАрдИ/рд╕рдВрдкрд╛рджрдХ рдЬреЛ рд░рд╕реНрдЯ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рд╕рдордЭрддрд╛ рд╣реИ, рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рдВрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЯреЛрдХрд░рд╛ рдЯреЛрдХрди рдХреЛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдВрддрд░ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рд╛рдлрд╝ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдЬрдмрдХрд┐ рдореБрдЭреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрдкрд╛рджрдХреЛрдВ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдЕрдЪреНрдЫреА рд▓рдЧрддреА рд╣реИрдВ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдЙрдиреНрдирдд рд╕рдВрдкрд╛рджрдХ рдХреА рдзрд╛рд░рдгрд╛ рдХреЗ рд╕рд╛рде рднрд╛рд╖рд╛ рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рд▓рдЧрд╛ рдЬреИрд╕реЗ рд╕реА # рдЗрд╕ рддрд░рд╣ рд╕реЗ рдбрд┐рдЬрд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдпрд╣ рдЙрд╕ рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде рдореЗрд░реА рдирд┐рд░рд╛рд╢рд╛ рдХрд╛ рдПрдХ рдкреНрд░рдореБрдЦ рдХрд╛рд░рдХ рдерд╛ред
@epage рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ crate
рдПрдХ рджреГрд╢реНрдпрддрд╛ рд╕рдВрд╢реЛрдзрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдХреЗ рдмрд╛рд╡рдЬреВрдж рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ; рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рд╕реБрдЭрд╛рд╡ рджреЗ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░рдирд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╢рдорди рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдХрд┐рд╕реА рднреА рд╕рдВрдкрд╛рджрдХ рдХреЗ рд▓рд┐рдП crate::
рдХреЛ crate field
рд╕реЗ рдЕрд▓рдЧ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░рдирд╛ рдХрд╛рдлреА рдорд╛рдореВрд▓реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдкреВрд░реНрд╡ рд╣рдореЗрд╢рд╛ crate
+ ::
рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЬрд╛рдВрдЪрдирд╛ рдЖрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИ for crate ::foo::bar
рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ (рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдлреА рджреБрд░реНрд▓рдн рд╣реЛрдЧрд╛ ..)ред
рдПрдХ рдЖрдИрдбреАрдИ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдмрд╣реБрдд рдХрдо рдорд╛рддреНрд░рд╛ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдорд╛рддреНрд░рд╛ рдореЗрдВ рд╢реЛрд░ рдЬреЛрдбрд╝ рджреЗрдЧреА, рдирдХрд╛рд░рд╛рддреНрдордХ рдиреЗрдЯрд┐рдВрдЧред рдЖрдИрдПрдордУ (рдпрд╣ рдЕрддреНрдпрдзрд┐рдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╣реИ, рд▓реЗрдХрд┐рди рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЖрдИрдбреАрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рджреЛрдиреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕реВрдЪрд┐рдд) рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рдпрд╣ рдЕрд░реНрдердкреВрд░реНрдг рдЧреИрд░-рд╕реНрдерд╛рдиреАрдп рдЬрд╛рдирдХрд╛рд░реА рдмрддрд╛рддрд╛ рд╣реИ (рдХреНрдпрд╛ рдпрд╣ рдЙрдкрдпреЛрдЧ рдПрдХ рдЪрд░ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ mut
рдХреЗ рд╕рд╛рде рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛) рдФрд░ рдбреА рдЬреЛрд░ рджреЗрддрд╛ рд╣реИ рдХреЛрдб рдХреЗ рд╕реНрдерд╛рдиреАрдп "рдмреЙрдпрд▓рд░рдкреНрд▓рд╛рдЯреА" рдкрд╣рд▓реВ (рдЗрд╕рд▓рд┐рдП рд╕рднреА рдЦреЛрдЬрд╢рдмреНрджреЛрдВ рдХреА рд╢реИрд▓реА рдмрд┐рд▓реНрдХреБрд▓ рдПрдХ рдЬреИрд╕реА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП)ред
рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ dom
(рдпрд╛рдиреА: рдШрд░реЗрд▓реВ) рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рдЙрдореНрдореАрджрд╡рд╛рд░ рд╣реИред
рдЗрд╕рдореЗрдВ рддреАрди рдЕрдХреНрд╖рд░ рд╣реИрдВ (рд╕рдВрд░реЗрдЦрдг рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛, рдпрд╛рдж рд░рдЦрдиреЗ рдореЗрдВ рдЖрд╕рд╛рди), рдпрд╣ рдПрдХ рд╕рдВрдЬреНрдЮрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ - 'рдбреЙрдХреНрдпреВрдореЗрдВрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбрд▓' рдХреЗ рдЕрд▓рд╛рд╡рд╛ - рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕рдореЗрдВ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдЬреБрдбрд╝реА рд╣реБрдИ рд╣реИред
pub struct MyStruct {
dom num: i32,
pub msg: String,
}
рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рд╣реИ?
рдЗрд╕ рдкрд░ рдПрдХ рдХреЛрдг рдЬрд┐рд╕рдХрд╛ рдореИрдВрдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ рд▓реЗрдХрд┐рди рд╕рд╛рд░рд╛рдВрд╢ рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓рд╛ (рдЙрд╕ рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!) рдпрд╣ рд╣реИ рдХрд┐ рд╢реЙрд░реНрдЯрдХрдЯ рдореМрдЬреВрджрд╛ pub()
рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИред
рдпрджрд┐ pub
рдФрд░ <something>
(рдЬреИрд╕реЗ crate
) рдХрд╛ рд╡рд┐рд╢реЗрд╖ рдЕрд░реНрде рд╣реИ, рддреЛ рдпрд╣ рджреГрд╢реНрдпрддрд╛ рдХреЛ рдФрд░ рдХрдо рдХрд░ рджреЗрддрд╛ рд╣реИ, рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдкрд░рд┐рдЪрд┐рддрддрд╛ рджреНрд╡рд╛рд░рд╛, pub(<something>)
ред рд╣рдо рдЬрд┐рд╕ рднреА рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдЬрд╛рддреЗ рд╣реИрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрд╕реЗ рдореМрдЬреВрджрд╛ рдорд╢реАрдирд░реА рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдЙрд╕реЗ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП рди рдХрд┐ рдПрдХ рдФрд░ред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд╣рдо crate
рдпрд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
crate
рдХреЛ рд╕реНрдХреЛрдкрд┐рдВрдЧ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ (рдЬреИрд╕реЗ crate(<something>)
) рдХреЛ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдврд╝рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?pub()
рдкрджрд╛рд╡рдирдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП pub
рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдЕрд░реНрде рд╣реИ?рдЗрд╕реЗ рдФрд░ рд▓рдХреНрд╖реНрдп рдХреА рдореЗрд░реА рд╕рдордЭ (рдЖрдВрддрд░рд┐рдХ рдПрдкреАрдЖрдИ рд╕реЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдкреАрдЖрдИ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░реЗрдВ) рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рдореБрдЭреЗ @vitral рдХреЗ pub(extern)
рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ред
pub
рдХреЛ pub(<something>)
рдХрд╛ рд╢реЙрд░реНрдЯрдХрдЯ рдмрдирд╛рдХрд░ рдореМрдЬреВрджрд╛ рдорд╢реАрдирд░реА рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддрд╛ рд╣реИpublic
рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдкреАрдЖрдИ рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИредрдПрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдкрд░ рдЖрд░рдИ рдкреНрд░рднрд╛рд╡
рдореМрдЬреВрджрд╛ pub
рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдПрдХ рд▓рд╛рдн рдПрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рд╣реИред рдЖрд╕рд╛рди рд░рд╛рд╕реНрддрд╛ рдПрдкреАрдЖрдИ рдХреЛ рдХреЗрд╡рд▓ рдПрдХ-рд╕реНрддрд░ рдКрдкрд░ рдЙрдЬрд╛рдЧрд░ рдХрд░рдирд╛ рд╣реИред рдЗрд╕рд╕реЗ рдЯреЛрдХрд░реЗ рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЗ рд▓рд┐рдП рдЪреАрдЬреЛрдВ рдХреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдкреВрд░реА рд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдирд┐рдЬреАред
рдЬрдмрдХрд┐ рдЕрднреА рднреА pub(super)
рд╣реЛрдЧрд╛, pub(crate)
рдХреЗ рд▓рд┐рдП рд╢реЙрд░реНрдЯрдХрдЯ рд╣реЛрдиреЗ рд╕реЗ рд▓реЛрдЧреЛрдВ рдХреЛ рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рдЖрдЧреЗ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЛрдЧреЛрдВ рдХреЛ рдЕрдкрдиреЗ рдПрдкреАрдЖрдИ рдХреЛ рдПрдирдХреИрдкреНрд╕реБрд▓реЗрдЯ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдЫреЛрдЯреЗ рдмрдХреНрд╕реЗ рдХреА рд╕рдВрд╕реНрдХреГрддрд┐ рдХреЗ рдХрд╛рд░рдг рдпрд╣ рдХреЛрдИ рдореБрджреНрджрд╛ рдирд╣реАрдВ рд╣реИред
рд▓реЗрдХрд┐рди рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реБрдП, рдпрд╣ рдореБрдЭреЗ pub(extern)
. рдкрд░ рдореЗрд░реА рдЙрдкрд░реЛрдХреНрдд рдЯрд┐рдкреНрдкрдгреА рдкрд░ рдПрдХ рдФрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рджреЗрддрд╛ рд╣реИ
pub
pub(super)
. рдХреЗ рд▓рд┐рдП рдПрдХ рд╢реЙрд░реНрдЯрдХрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПpub(extern)
рдЖрд╡рд╢реНрдпрдХ рд╣реИредрдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рд╕реЗ рд╕рдВрдХреНрд░рдордг рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреА рдЪрд┐рдВрддрд╛ рдХреЛ рд╕рд╛рдордиреЗ рд▓рд╛рдпрд╛ рдерд╛ред рдпрд╣ рдЙрдирдХреЗ рд╕рд╛рде рдмреЗрд╣рддрд░ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░рддрд╛ рд╣реИред
public
рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рд╕реЗ рдЕрдзрд┐рдХ рдирд┐рдХрдЯрддрд╛ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИрдЗрдореЛ рдпрд╣ рд╕рднреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИред рддреЛ рдЗрд╕реЗ рдЕрд▓рдЧ рдХрд░реЗрдВ рдФрд░ рдореБрдЭреЗ рдпрд╣ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдВ рдХрд┐ рдХреНрдпреЛрдВ рдирд╣реАрдВ :)
рдореБрдЭреЗ рдЕрднреА рднреА pub(foo)
рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕реЗ рдирдлрд░рдд рд╣реИред рдЕрддрд┐рд╢рдпреЛрдХреНрддрд┐рдкреВрд░реНрдг рд░реВрдк рд╕реЗ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рддрдп рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рд╣реИ рдпрд╛ рдПрдХрд╛рдзрд┐рдХ рдХреАрд╡рд░реНрдб рдХрд╛ рдореИрд╢рдЕрдк рд╣реИред рд╣рдо let(mut)
рдпрд╛ for(in)
рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЗрд╕ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╕реМрджрд╛ рд╣реИ?
@parasyte pub<foo>
рдЬреАрдд рдХреЗ рд▓рд┐рдП! рдЖрдЦрд┐рд░рдХрд╛рд░, рдХреНрдпрд╛ рдпрд╣ _рдкреНрд░рдХрд╛рд░ рдХреА рджреГрд╢реНрдпрддрд╛_ рдирд╣реАрдВ рд╣реИ?
pub<crate>
рдпрд╛ pub(crate)
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмреЗрд╣рддрд░ рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реИрдВред
рд╢рд┐рд╡рд┐рд░ рдмрджрд▓рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░:
рдкрд╣рд▓реЗ рддреЛ рдореИрдВ crate
рдХрд╛ рдмрд╣реБрдд рд╡рд┐рд░реЛрдз рдХрд░рддрд╛ рдерд╛ рдФрд░ рд╕реЛрдЪрддрд╛ рдерд╛ рдХрд┐ "рдпрд╣ рдЕрдЪреНрдЫреЗ pub
рдХреЛ рдмрд░реНрдмрд╛рдж рдХрд░ рд░рд╣рд╛ рд╣реИ"ред
рдлрд┐рд░ рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрдкрдиреА рдХреБрдЫ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╕рд╛рде-рд╕рд╛рде рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдЗрд╕реЗ рдбреВрдмрдиреЗ рджрд┐рдпрд╛ред
рд╕рдЪ рдХрд╣реВрдБ рддреЛ, рдХреБрдЫ рджрд┐рдиреЛрдВ рдХреЗ рдмрд╛рдж рдореИрдВ pub(X)
рдХреЛ рдФрд░ рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддрд╛ рдерд╛, рдпрд╣ рддреБрд▓рдирд╛ рдореЗрдВ рднрджреНрджрд╛ рд▓рдЧрддрд╛ рд╣реИ, рдФрд░ рдкрдврд╝рдиреЗ рдореЗрдВ рдХрдард┐рди рд╣реЛрддрд╛ рд╣реИред
рд╢реБрд░реВ рдореЗрдВ рдореБрдЭреЗ рдбрд░ рдерд╛ рдХрд┐ (рджреГрд╢реНрдп) рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ; рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд╕рд╛рде рд╡рд┐рдкрд░реАрдд рд╣реБрдЖ: рдЕрдЧрд░ рдореБрдЭреЗ рдЕрдм crate
рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ рддреЛ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ "рдЯреЛрдХрд░рд╛ рд╕рд╛рдорд╛рди" рд╣реИред рдЪрд╛рд╣реЗ рд╡рд╣ рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реЛ рдпрд╛ рджреГрд╢реНрдпрддрд╛ рдШреЛрд╖рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реЛред рд╕рдВрджрд░реНрдн рд╕реЗ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рдЕрдзрд┐рдХрд╛рдВрд╢ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рд╣реИ (рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдХреА рддрд░рд╣)ред
рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЕрднреА рднреА рдЕрд╡рд╢рд┐рд╖реНрдЯ "рдХрдард┐рди" (рджреГрд╢реНрдп) рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЕрдм рдЙрд╕ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдорд╛рддреНрд░рд╛рддреНрдордХ рдкрдардиреАрдпрддрд╛ рдЬреАрдд рдХреА рддрд░рд╣ рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рдкрд╛рд░ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ (рдЬреИрд╕рд╛ рдХрд┐: "рд╕реНрд░реЛрдд рдХреЛрдб рд▓рд╛рдЗрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдХрдо рджреГрд╢реНрдп рдЯреЛрдХрдирдирд╛рдЗрдЬреЗрд╢рди/рдкреНрд░рдпрд╛рд╕ рдмрдирд╛рдо рд╕реНрд░реЛрдд рдХреЛрдб рд▓рд╛рдЗрдиреЗрдВ рдЬреЛ рдЕрдзрд┐рдХ рдЕрд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдИрдВ")ред
рдЙрд╕ рдХреЛрдг рд╕реЗ crate
- intern
(рдпрд╛ рдХреЛрдИ рдЕрдиреНрдп рд╡рд┐рд╖рдорддрд╛) рднреА рдПрдХ рдХрджрдо рдкреАрдЫреЗ рдХреА рддрд░рд╣ рдорд╣рд╕реВрд╕ рд╣реЛрдЧрд╛ред
рдпрд╣ рдХрд╣рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ред рдЕрдЧрд░ рдореБрдЭреЗ рдХрд┐рд╕реА рдПрдХ рдХреЛ рдЪреБрдирдирд╛ рд╣реЛрддрд╛, рддреЛ " crate ::foo::bar
рдЬрд╕реНрдЯ рд╡рд░реНрдХреНрд╕" рдХреЗ рдЗрд░реНрдж-рдЧрд┐рд░реНрдж рдПрдХ рдЕрдЪреНрдЫреА рдХрд╣рд╛рдиреА рдХреЗ рдмрдЬрд╛рдп " crate
рдХрд╛ рдЕрд░реНрде рдХреНрд░реЗрдЯ рд╕реНрдЯрдл" рдХреЗ рдЖрд╕рдкрд╛рд╕ рдПрдХ рдЕрдЪреНрдЫреА рдХрд╣рд╛рдиреА рд╣реЛрддреАред
рдореЗрд░реЗ рджреЛ рд╕реЗрдВрдЯ рд╣реИрдВ:
crate mod
, crate struct
, crate fn
, ... рдХрд╛ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореБрдЭреЗ рдпрд╣ рдмреЗрд╣рдж рдЙрдкрдпреЛрдЧреА рд▓рдЧрддрд╛ рд╣реИредcrate
, pub(crate)
, ...) рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рдЕрдзрд┐рдХ рд▓рдВрдмрд╛ рди рд╣реЛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЗрд╕реЗ рдЕрдХреНрд╕рд░ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВредрдпрджрд┐ рдпрд╣ рдореЗрд░реЗ рдКрдкрд░ рд╣реЛрддрд╛, рддреЛ рдореИрдВ рдХреАрд╡рд░реНрдб рдХреЗ рд░реВрдк рдореЗрдВ vis
рдФрд░ рд╕рдВрд╢реЛрдзрдХ рдХреЗ рд░реВрдк рдореЗрдВ рджреГрд╢реНрдпрддрд╛ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП vis(pub)
, vis(crate)
, рдЖрджрд┐ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдзрд┐рдХ рдмрдирд╛рддрд╛ рд╣реИ рдореЗрд░реЗ рд▓рд┐рдП рднрд╛рд╡рдирд╛ред
рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА "рджреГрд╢реНрдпрддрд╛ рд╡рд┐рдирд┐рд░реНрджреЗрд╢рдХ" рдХреЗ рд░реВрдк рдореЗрдВ pub
рдХреЗ рд╕рд╛рде рдлрдВрд╕ рдЧрдП рд╣реИрдВ, рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ crate
рдкрд╕рдВрдж рд╣реИред pub(crate)
рдореЗрд░реЗ рд▓рд┐рдП рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрдврд╝рддрд╛ рд╣реИ, рдЯреЛрдХрд░рд╛ рдХреЗ рд▓рд┐рдП рдирд┐рдЬреА - рдореБрдЭреЗ рдпрд╣рд╛рдВ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдФрд░ рдирд┐рдЬреА рджреЛрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИред
рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рд╕реЗ рдирдП рдЦреЛрдЬрд╢рдмреНрджреЛрдВ рдФрд░ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдЦреЛрдЬрд╢рдмреНрджреЛрдВ рдЖрджрд┐ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрдирд╛ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╕рд┐рдЦрд╛рдирд╛ рдХрд┐ рджреЛ рджреГрд╢реНрдпрддрд╛ pub
рдФрд░ crate
рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреА рд╣реИ, рдФрд░ рдПрдХ рдХрд╛ рдЕрд░реНрде рд╣реИ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ, рдФрд░ рджреВрд╕рд░реЗ рдХрд╛ рдЕрд░реНрде рдЯреЛрдХрд░рд╛ рдХреЗ рд▓рд┐рдП рдирд┐рдЬреА рд╣реИ, рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдореБрдЭреЗ рдЗрд╕рдХреА рдЖрджрдд рд╣реЛ рдЧрдИ рд╣реИ crate
рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд┐рдЫрд▓реЗ рджреЛ рд╣рдлреНрддреЛрдВ рдХреЗ рджреМрд░рд╛рдиред
рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдХреАрд╡рд░реНрдб рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реИрдВ (рдпрд╛рдиреА: crate
) рдЕрд░реНрдереЛрдВ рдХреЛ рднреНрд░рдорд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдореИрдВ рддрд░реНрдХ рджреВрдВрдЧрд╛ рдХрд┐ рд╕рдВрджрд░реНрдн рд╢рдмреНрдж рд╕реЗ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдорд╕реНрддрд┐рд╖реНрдХ рд╕рдВрджрд░реНрдн рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИ (рд╕рдВрдХрд▓рдХ рдЗрд╕реЗ рдХреИрд╕реЗ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИ рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдорд╛рдорд▓рд╛ рд╣реИ): рдпрд╣ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдо for
for x in y
рдФрд░ impl X for Y
рдореЗрдВ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ .
рд╕рдорд╛рди рд░реВрдк рд╕реЗ, crate
рдХреЛ рдПрдХ рджреГрд╢реНрдпрддрд╛ рдХреНрд╡рд╛рд▓реАрдлрд╛рдпрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкреЗрд╢ рдХрд░рдиреЗ рд╕реЗ рд╕рдВрднрд╡рддрдГ рднреНрд░рдо рдкреИрджрд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХрд╛ рдЕрд░реНрде, рдХрд┐рд╕реА рд╕рджрд╕реНрдп рдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреНрд╡рд╛рд▓реАрдлрд╛рдпрд░ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдЙрд╕ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрджрд░реНрдн рдХреЗ рд╕рд╛рде рдкреНрд░рджрд╛рди рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рд╕реНрдкрд╖реНрдЯ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, crate fn my_func();
"рдпрд╣ рдПрдХ рдЯреЛрдХрд░рд╛ рд╣реИ" рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рдкрдврд╝рддрд╛ рд╣реИ, рдпрд╣ "рдпрд╣ рдПрдХ рдЯреЛрдХрд░рд╛-рджреГрд╢реНрдпрдорд╛рди рдХрд╛рд░реНрдп рд╣реИ" рдХреЗ рд░реВрдк рдореЗрдВ рдкрдврд╝рддрд╛ рд╣реИред
рдЙрд╕ рдиреЗ рдХрд╣рд╛, рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╕рдВрдЬреНрдЮрд╛ рд╣реИ рдЕрд╕рдВрдЧрдд рд╣реИред рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рджреГрд╢реНрдпрддрд╛ рдХреНрд╡рд╛рд▓реАрдлрд╛рдпрд░ рдХреАрд╡рд░реНрдб рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЕрдЧрд░ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рднреНрд░рдорд┐рдд рдХрд░реЗрдЧрд╛, рддреЛ рдпрд╣ pub(crate)
рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣реИ рдЬреЛ рд╕рд╣рдЬ рд░реВрдк рд╕реЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ рдФрд░ рднрд╛рд╖рд╛ рдореЗрдВ рдХрд╣реАрдВ рдФрд░ рдХреЛрдИ рдЕрдиреНрдп рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╕рдордХрдХреНрд╖ рдирд╣реАрдВ рд╣реИред рдореЗрд░реЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ рдмрджрд╕реВрд░рдд рд╣реИрдХ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред
рдХрд┐рд╕реА рдРрд╕реЗ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд┐рд╕рдиреЗ crate
рдХреЛ pub(crate)
рдХреЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд░реВрдк рдореЗрдВ рдФрд░ @aturon рдХреА рдирд╡реАрдирддрдо рдкреЛрд╕реНрдЯ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рд╡реНрдпрдХреНрдд рдХреА рд╣реИ:
рдПрдХ рджреГрд╢реНрдпрддрд╛ рд╕рдВрд╢реЛрдзрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╣рд╛рдпрдХ рдЯреЛрдХрд░рд╛ (рдпрд╣рд╛рдВ рдЯреНрд░реИрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ 138ред рдЕрдм рддрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдЬрдВрдЧ 2018 рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рд░ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ ред
рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ рд╕реНрдкрд╖реНрдЯ рд╣реВрдВ рдХрд┐ рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ pub(crate)
рдХреЛ рдХрд┐рд╕реА рдЪреАрдЬрд╝ рд╕реЗ рдмрджрд▓рдиреЗ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд╣реВрдВ (рдЬреИрд╕рд╛ рдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрд╣реБрдордд рд╣реИ)ред
рд╡рд░реАрдпрддрд╛ рдХреЗ рдХреНрд░рдо рдореЗрдВ, рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдЙрд╕реЗ рд╕рдордЭрдирд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛, рдЦрд╛рд╕рдХрд░ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдирдП рдпрд╛ рд░рд╕реНрдЯ рд╕реЗ рдЕрдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ:
intern
(рдпрд╛ рдХреБрдЫ рдЕрдиреНрдп рд╕рдорд╛рди рдирдП рдХреАрд╡рд░реНрдб)crate
pub(crate)
рдЕрдЧрд░ рдХреЛрд░ рдЯреАрдо рдХреЛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ intern
рдпрд╛ рдРрд╕рд╛ рд╣реА рдХреБрдЫ рдЕрдВрддрддрдГ рдХрднреА рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рддреЛ рдореИрдВ crate
рд╕реЗ рдкреАрдЫреЗ рд╣реЛ рдЬрд╛рдКрдВрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдЕрднреА рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ pub(crate)
рдкрд░ рдПрдХ рдмрдбрд╝рд╛ рд╕реБрдзрд╛рд░ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ @Centril рдФрд░ рдЕрдиреНрдп рдиреЗ рдЗрд╕рдХреЗ рдХрд╛рд░рдгреЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд┐рдпрд╛ рд╣реИред
рддреЛ рдореИрдВ рдЗрд╕ рдХреЗ рд░рд╛рд╕реНрддреЗ рдореЗрдВ рдЦрдбрд╝рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рдЕрдЧрд░ рдЕрдзрд┐рдХ рдЕрдиреБрднрд╡реА, рдХреЛрд░ рдЯреАрдо рдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдЧреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд░рд╛рд╕реНрддрд╛ рд╣реИред рд╡рд┐рдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╡реНрдпрдХреНрдд рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рд╕рд╛рдл рд╣реИред рдЬрдВрдЧ!
@рд░рд╛рд▓реНрдлрдмреАрдбрд░реНрдЯ
рд╢реБрд░реВ рдореЗрдВ рдореБрдЭреЗ рдбрд░ рдерд╛ рдХрд┐ (рджреГрд╢реНрдп) рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ; рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд╕рд╛рде рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рд╣реБрдЖ: рдЕрдЧрд░ рдореИрдВ рдЕрдм рдЯреЛрдХрд░рд╛ рджреЗрдЦрддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ "рдЯреЛрдХрд░рд╛ рд╕рд╛рдорд╛рди" рд╣реИред рдЪрд╛рд╣реЗ рд╡рд╣ рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реЛ рдпрд╛ рджреГрд╢реНрдпрддрд╛ рдШреЛрд╖рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реЛред рд╕рдВрджрд░реНрдн рд╕реЗ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рдЕрдзрд┐рдХрд╛рдВрд╢ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рд╣реИ (рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдХреА рддрд░рд╣)ред
@zesterer
рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдХреАрд╡рд░реНрдб рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реИрдВ (рдпрд╛рдиреА: рдХреНрд░реЗрдЯ) рдЕрд░реНрдереЛрдВ рдХреЛ рднреНрд░рдорд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдореИрдВ рддрд░реНрдХ рджреВрдВрдЧрд╛ рдХрд┐ рд╕рдВрджрд░реНрдн рд╢рдмреНрдж рд╕реЗ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдорд╕реНрддрд┐рд╖реНрдХ рд╕рдВрджрд░реНрдн рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИ (рд╕рдВрдХрд▓рдХ рдЗрд╕реЗ рдХреИрд╕реЗ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИ рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдорд╛рдорд▓рд╛ рд╣реИ): рдпрд╣ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдХреЗ рд▓рд┐рдП рдХреЗ рд▓рд┐рдП y рдореЗрдВ x рдФрд░ impl X рдХреЗ рд▓рд┐рдП рд╡рд╛рдИ рдХреЗ рдЕрд░реНрдердкреВрд░реНрдг рдЕрд░реНрде рдХреЛ рднреНрд░рдорд┐рдд рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
рдореЗрд░рд╛ рдорддрд▓рдм рдЖрдк рджреЛрдиреЛрдВ рдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдмреБрд▓рд╛рдирд╛ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдмрджрд▓рд╛рд╡ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд▓реЛрдЧреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рдирд╛ рд╣реИред
рдЬрдмрдХрд┐ рдореБрдЭреЗ рдпрд╣ рдЕрдЬреАрдм рд▓рдЧ рд░рд╣рд╛ рд╣реИ, рдореЗрд░реА рд╕рдмрд╕реЗ рдмрдбрд╝реА рдЪрд┐рдВрддрд╛ рдЧреИрд░-рдЬрдВрдЧрд▓реА рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рд╣реИред
рдореБрдЭреЗ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ рдЕрдЧрд░ рд╣рдо рдЗрд╕ рдкрд░ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЕрдзреНрдпрдпрди рдХрд░ рд╕рдХреЗрдВ рддрд╛рдХрд┐ рдпрд╣ рдкрддрд╛ рдЪрд▓ рд╕рдХреЗ рдХрд┐ рдЗрди рдЪрд┐рдВрддрд╛рдУрдВ рдХрд╛ рдХрд┐рддрдирд╛ рдкреНрд░рднрд╛рд╡ рдкрдбрд╝рддрд╛ рд╣реИред
@epage , рдмрд╣реБрдд рд╕рд╣рдордд рд╣реИрдВ, рдЬрдВрдЧ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдпреВрдПрдХреНрд╕ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрднреА рдпрд╣реА рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рд╣рдо рдкрд░рд┐рдгрд╛рдореЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рдмреАрдЪ рдореЗрдВ рд╣реИрдВред
рдЙрд╕рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реА рдХрдВрдкрдиреА рд╕реЗ рдХреБрдЫ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ:
рдореИрдВ рдЕрдкрдиреЗ рд╡рд┐рднрд╛рдЧ рдореЗрдВ "рд░рд╕реНрдЯ рдПрдбрд╡реЛрдХреЗрдЯ" рд╣реВрдВ, 3 рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рд╕рднреА рдХреА рд╕реА # рдореЗрдВ рдПрдХ рдареЛрд╕ рдкреГрд╖реНрдарднреВрдорд┐ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдирдП рд╣реИрдВред рджреВрд╕рд░реЗ рджрд┐рди рдореИрдВрдиреЗ " crate
-stuff" рдХреЗ рд╕рд╛рде рдЕрдкрдиреА рд╢реЛрдз рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ Rust 2018 рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ред
рдЬрдм рд╣рдордиреЗ рдХреЛрдб рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛, рддреЛ рдмрд╛рддрдЪреАрдд рд▓рдЧрднрдЧ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реБрдИ:
"рддреЛ рдпрд╣рд╛рдБ рдХреБрдЫ рдЕрдиреНрдп рдкрд░рд┐рд╡рд░реНрддрди рд╣реИрдВ рдЬреЛ рдореИрдВрдиреЗ рдХрд┐рдП; рдирдИ рдЖрдпрд╛рдд рдкреНрд░рдгрд╛рд▓реА; рд╕рдВрд╢реЛрдзрдХред"
"рдпрд╣ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ?" (
use crate::object
рдФрд░crate x: object
рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреЗ рд╣реБрдП)
"рдЗрд╕ рдЯреЛрдХрд░реЗ рд╕реЗ рдЖрдпрд╛рдд рдХрд░реЗрдВред" рдФрд░ "рджреГрд╢реНрдпрддрд╛ рд╕рдВрд╢реЛрдзрдХред"
"рдЖрд╣, рдареАрдХ рд╣реИред рдХреБрдЫ рдФрд░ рдЬреЛ рдмрджрд▓ рдЧрдпрд╛?"
рдЪрд░реНрдЪрд╛ рдХрд╛ рдЕрдВрддред
рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╣рдордиреЗ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдФрд░ рдмрд╛рддрдЪреАрдд рдХреА, рдФрд░ рдХреНрдпрд╛ рд╣рдореЗрдВ рдХреБрдЫ рдкреИрдЯрд░реНрди рдЕрдкрдирд╛рдиреЗ рдЪрд╛рд╣рд┐рдП; рд▓реЗрдХрд┐рди рдЗрди рджреЛ рдорджреЛрдВ рдХреЗ "рд╢рд┐рдХреНрд╖рдг рдкрд╣рд▓реВ" рдХреЛ рдХреБрдЫ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдЙрдмрд╛рд▓рд╛ рдЧрдпрд╛ рдФрд░ рддрдм рд╕реЗ (рдореЗрд░реА рдЬрд╛рдирдХрд╛рд░реА рдореЗрдВ) рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЕрдЧрд▓реА рдмрд╛рд░ рдЬрдм рд╣рдо рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ рддреЛ рдЕрдЧрд░ рдореИрдВ рдХреБрдЫ рдФрд░ рд╕реБрдиреВрдВрдЧрд╛ рддреЛ рдореИрдВ рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░ рджреВрдВрдЧрд╛ред
@ralfbiedert рдЗрд╕реЗ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
@epage , рдмрд╣реБрдд рд╕рд╣рдордд рд╣реИрдВ, рдЬрдВрдЧ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдпреВрдПрдХреНрд╕ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрднреА рдпрд╣реА рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рд╣рдо рдкрд░рд┐рдгрд╛рдореЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рдмреАрдЪ рдореЗрдВ рд╣реИрдВред
рдЬрдмрдХрд┐ рдореИрдВ рдЗрди рдпреВрдПрдХреНрд╕ рдЙрдкрд╛рдЦреНрдпрд╛рдиреЛрдВ рдХреЛ рдорд╣рддреНрд╡ рджреЗрддрд╛ рд╣реВрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕реАрдЦрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдпреВрдПрдХреНрд╕ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЕрд░реНрд╣рддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реВрдВрдЧрд╛ред рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА рдПрдХ рдЕрдзрд┐рдХ рдФрдкрдЪрд╛рд░рд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдмрд╛рдд рдХрд░ рд░рд╣реА рд╣реИ рдЬреЛ рдЧрд╣рд░реА рд╕рдордЭ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддреА рд╣реИ, рдкреВрд░реНрд╡рд╛рдЧреНрд░рд╣реЛрдВ рдХреЛ рджреВрд░ рдХрд░ рд╕рдХрддреА рд╣реИ, рдЖрджрд┐ред
рдпрд╣рд╛рдБ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ рдПрдХ рдЬрдВрдЧ рд╕реЗ рдЖ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдХреБрдЫ рд╣рдж рддрдХ рдиреМрд╕рд┐рдЦрд┐рдпрд╛ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдпрд╣ рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕ рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдордЭрджрд╛рд░ рдФрд░ рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ рд╡рд╣ "рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рдЬреА" рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИред
рдЕрдм, pub
рдЕрдЪреНрдЫрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдзреБрдирд┐рдХ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╕рд░рд▓ рдФрд░ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░рд╕реНрдЯ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЗрд╕реЗ рдЕрди-рд╕реАрдЦрдирд╛ рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╣рд░ рдЬрдЧрд╣ рдПрдХ рдФрд░ рдХреАрд╡рд░реНрдб рдЫрд┐рдбрд╝рдХрдирд╛ рдереЛрдбрд╝рд╛ рдЕрдирд╛рдбрд╝реА рд╣реИред рдЕрд░реНрдерд╛рддреН, рдЗрд╕рдХрд╛ рдЕрд░реНрде рдпрд╣ рд╣реИ рдХрд┐ "рдпрд╣ рдПрдХ рдмрдЯрди рд╣реИ рдЬреЛ рдмреЙрдХреНрд╕ рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ", рдореЙрдбреНрдпреВрд▓ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рдмреЙрдХреНрд╕: рджреГрд╢реНрдпрддрд╛ "рдПрдХ рд╕реНрддрд░ рд╕реЗ рдКрдкрд░" рдХрд╛ рдЕрд░реНрде рд╣реИред
рддреЛ, рдореЗрд░реЗ рд▓рд┐рдП, $#$2$# pub
рдХреЗ рдмрдЬрд╛рдп crate
рдпрд╛ рдЙрд╕ рдкреНрд░рдХреГрддрд┐ рдХреЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╕ рдЦреБрдЬрд▓реА рдорд╣рд╕реВрд╕ рдХрд░рддрд╛ рд╣реИ: рдпрджрд┐ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╣реЛрдирд╛ рдЧреИрд░-рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реИ, рддреЛ рдЯреЛрдХрд░рд╛ рд╕реЗ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдФрд░ рднреА рд╡рд┐рд╢реЗрд╖ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП . рдпрд╛рдиреА рдХреНрд░реЗрдЯ рдХреЗ рдПрдкреАрдЖрдИ рдХреЛ рдЦрд╛рд╕ рддрд░реАрдХреЗ рд╕реЗ рдирд┐рд░реВрдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЗрд╕рд▓рд┐рдП, рдореИрдВ @epage рд╕реЗ рддрд╣реЗ рджрд┐рд▓ рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ, pub
рдХреЛ рд╡рд╣реА рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ pub(extern)
рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреЛрд╖реНрдардХ рдореЗрдВ рджрд┐рдП рдЧрдП рдХреАрд╡рд░реНрдб рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╛рд▓реЛрдВ рд╡рд╛рд▓реЗ рд▓рдЧрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╕рдорд░реНрдкрд┐рдд рдХреАрд╡рд░реНрдб рдХреЗ рд▓рд╛рдпрдХ рд╣реЛред crate
рдХреАрд╡рд░реНрдб рдЙрд╕ рдЕрд░реНрде рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдореИрдВ рдЗрд╕рдХрд╛ рдЕрд░реНрде рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ "рдпрд╣ рдПрдХ рдирд┐рд░реНрдпрд╛рддрд┐рдд рдХреНрд░реЗрдЯ рд╕рджрд╕реНрдп" рд╣реИред рдпрд╛ export
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реА рд╕рд╛рд░реА рдмрд╛рдд рдмрд┐рдХ рдЧрдИ рд╣реЛ, рдФрд░ рдпрд╣ рд╕рдм "рдХреАрд╡рд░реНрдб рд╕рд╣реА рдирд╣реАрдВ рд╣реИрдВ" рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред рд▓реЗрдХрд┐рди pub
рдЗрддрдирд╛ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рд╢реЗрд╖ рдорд╣рд╕реВрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рд╡рд┐рд╢реЗрд╖ (рдЯреЛрдХрд░рд╛-рдирд┐рд░реНрдпрд╛рдд рдПрдкреАрдЖрдИ) рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдореИрдВрдиреЗ рдЗрд╕ рд╕рдкреНрддрд╛рд╣ рдХреЗ рдЕрдВрдд рдореЗрдВ RustConf рдореЗрдВ рдПрдХ рд╡рд╛рд░реНрддрд╛ рджреЗрдЦреА, рдЬрд┐рд╕рдореЗрдВ рдЗрд╕рдХреЗ рдХреЛрдб рдирдореВрдиреЛрдВ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ pub(crate)
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдЗрд╕рдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд╛рджреЗ рдкреБрд░рд╛рдиреЗ crate
рдХреЗ рд▓рд┐рдП рдЪрд╛рд╣рд╛ред рдореИрдВ рдЕрднреА рднреА рдореВрд▓ рдпреЛрдЬрдирд╛ рдХреЗ рдмрд╣реБрдд рд╕рдорд░реНрдердХ рд╣реВрдВред
@steveklabnik
рдореИрдВрдиреЗ рдЗрд╕ рд╕рдкреНрддрд╛рд╣ рдХреЗ рдЕрдВрдд рдореЗрдВ RustConf рдореЗрдВ рдПрдХ рд╡рд╛рд░реНрддрд╛ рджреЗрдЦреА, рдЬрд┐рд╕рдореЗрдВ рдЗрд╕рдХреЗ рдХреЛрдб рдирдореВрдиреЛрдВ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкрдм (рдЯреЛрдХрд░рд╛) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдЗрд╕рдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореБрдЭреЗ рд╕рд╛рджреЗ рдкреБрд░рд╛рдиреЗ рдЯреЛрдХрд░реЗ рдХреА рдЗрдЪреНрдЫрд╛ рджреАред рдореИрдВ рдЕрднреА рднреА рдореВрд▓ рдпреЛрдЬрдирд╛ рдХреЗ рдмрд╣реБрдд рд╕рдорд░реНрдердХ рд╣реВрдВред
рдХреНрдпрд╛ рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рдХрд╛ рд╕рдВрджрд░реНрдн рдЬреНрдпрд╛рджрд╛рддрд░ RustConf рд╕реЗ рд╣реИ рдпрд╛ рдХреНрдпрд╛ рдпрд╣ рдЗрд╕ рдзрд╛рдЧреЗ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рд╕реЗ рдЕрд╕рд╣рдорддрд┐ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддрд╛ рд╣реИ? рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ pub(crate)
рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдмрд▓реНрдХрд┐ pub
рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рднреА рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓реА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдерд╛ рдФрд░ рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд▓реЛрдЧреЛрдВ рдХреА рдЬрд░реВрд░рддреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░реЗрдЧрд╛ред
рджреЗрдЦреЛ
@ рд╕реБрдкрд░рд╕реАрдб
рдЗрд╕рд▓рд┐рдП, рдореИрдВ рддрд╣реЗ рджрд┐рд▓ рд╕реЗ @epage рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ, рдкрдм рдХреЛ рд╡рд╣реА рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдкрдм (рдмрд╛рд╣рд░реА) рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреЛрд╖реНрдардХ рдореЗрдВ рджрд┐рдП рдЧрдП рдХреАрд╡рд░реНрдб рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╛рд▓реЛрдВ рд╡рд╛рд▓реЗ рд▓рдЧрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╕рдорд░реНрдкрд┐рдд рдХреАрд╡рд░реНрдб рдХреЗ рд▓рд╛рдпрдХ рд╣реЛред рдХреНрд░реЗрдЯ рдХреАрд╡рд░реНрдб рдЙрд╕ рдЕрд░реНрде рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдореИрдВ рдЗрд╕рдХрд╛ рдЕрд░реНрде рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ "рдпрд╣ рдПрдХ рдирд┐рд░реНрдпрд╛рддрд┐рдд рдХреНрд░реЗрдЯ рд╕рджрд╕реНрдп" рд╣реИред рдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдВ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реА рд╕рд╛рд░реА рдмрд╛рдд рдмрд┐рдХ рдЧрдИ рд╣реЛ, рдФрд░ рдпрд╣ рд╕рдм "рдХреАрд╡рд░реНрдб рд╕рд╣реА рдирд╣реАрдВ рд╣реИрдВ" рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред рд▓реЗрдХрд┐рди рдкрдм рдЗрддрдирд╛ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рд╢реЗрд╖ рдорд╣рд╕реВрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рд╡рд┐рд╢реЗрд╖ (рдЯреЛрдХрд░рд╛-рдирд┐рд░реНрдпрд╛рдд рдПрдкреАрдЖрдИ) рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЖрд░рдИ "рдХреЛрд╖реНрдардХ рдЖрдХрд╛рд░ рд╡рд╛рд▓реЗ рдХреАрд╡рд░реНрдб рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╛рд▓реЛрдВ рд╡рд╛рд▓реЗ рд▓рдЧрддреЗ рд╣реИрдВ"
рдЬрдмрдХрд┐ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдЬрдм рдореБрдЭреЗ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдЪрд▓рд╛ рддреЛ рд╡реЗ рд╕рд╛рдл-рд╕реБрдерд░реЗ рдереЗ (рд╕рднреА-рдпрд╛-рдХреБрдЫ рднреА friend
рд╕реЗ рдмрд╣реБрдд рдмреЗрд╣рддрд░), рдореЗрд░реА рдмрдбрд╝реА рдЪрд┐рдВрддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдПрдХ рд╕рдорд╛рдирд╛рдВрддрд░ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдирд╣реАрдВ рдмрдирд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╛ рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЬреЛ рдХреБрдЫ рднреА рд╣реИ рдЙрд╕реЗ рдЧрд▓реЗ рд▓рдЧрд╛рддреЗ рд╣реИрдВ рдпрд╛ рдкрд╛рддреЗ рд╣реИрдВ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рдорд╛рдзрд╛рдиред
рджреВрд╕рд░реА рдУрд░...
рдЖрд░рдИ рдпрд╛ export
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ,
рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ export
рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдореЗрд░реА рдкрд┐рдЫрд▓реА рдЯрд┐рдкреНрдкрдгреА crate
рдХреЗ рд╡рд┐рдкрд░реАрдд рд╣реИред рдЗрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ, export
рдХреЛ рджреГрд╢реНрдпрддрд╛ рд╕реЗ рднрд┐рдиреНрди рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред export
рдХрд╛ рдЕрд░реНрде рд╣реЛрдЧрд╛ pub(crate)
ред рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рд╢рд┐рдХреНрд╖рдг рдореЗрдВ рдЬреНрдпрд╛рджрд╛ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред
рдореИрдВ рдЕрдкрдиреЗ рдореВрд▓ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдЗрд╕ рд╡рд┐рд╕реНрддрд╛рд░ рдкрд░ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЬрд╛ рд╕рдХрддрд╛ рд╣реВрдВред
@ рд╕реБрдкрд░рд╕реАрдб
pub
[...] рджреГрд╢реНрдпрддрд╛ "рдПрдХ рд╕реНрддрд░ рд╕реЗ рдКрдкрд░"ред
crate
рдХреАрд╡рд░реНрдб рдЙрд╕ рдЕрд░реНрде рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдореИрдВ рдЗрд╕рдХрд╛ рдЕрд░реНрде рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ "рдпрд╣ рдПрдХ рдирд┐рд░реНрдпрд╛рддрд┐рдд рдХреНрд░реЗрдЯ рд╕рджрд╕реНрдп" рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрди рджреЛ рдЦреЛрдЬрд╢рдмреНрджреЛрдВ рдХреЗ рдЕрд░реНрде рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХреА рд╕рдордЭ рдпрд╣рд╛рдБ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХреЗ рдареАрдХ рд╡рд┐рдкрд░реАрдд рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЬреЛ рдпрд╣ рд╣реИ рдХрд┐ pub
рдХрд╛ рдЕрд░реНрде рд╕рднреА рдХреЗ рд▓рд┐рдП рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╣реИ рдЬрдмрдХрд┐ crate
рдХрд╛ рдЕрд░реНрде рдПрдХ рд╣реА рдЯреЛрдХрд░реЗ рд╕реЗ рдкрд╣реБрдБрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
@epage
pub(crate)
рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕рд╛рдл-рд╕реБрдерд░реА рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ , рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрдврд╝рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реА рдЖрдВрдЦреЛрдВ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИред рдпрд╛рдиреА рд╡рд╛рдХреНрдпрд╛рддреНрдордХ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛ рдореИрдВ рд╢рд╛рдпрдж рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рднреНрд░рдорд┐рдд рд╣реЛ рдЬрд╛рдКрдВрдЧрд╛, рдФрд░ рдХрд┐рд╕реА рднрд╛рд╖рд╛ рдХреЗ рд╢рдмреНрджрд╛рд░реНрде рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
@SimonSapin
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдФрд░ рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реИ рдХрд┐ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдЗрд╕реЗ рд╕рдордЭрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди crate
- рдПрдХ рд╕рдВрдЬреНрдЮрд╛ рд╣реЛрдиреЗ рдХреЗ рдирд╛рддреЗ - рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдпрд╛ рддреЛ рдПрдХ рдЯреЛрдХрд░рд╛ (?) рдпрд╛ рдЯреЛрдХрд░рд╛ рдХреА рд╕рдВрдкрддреНрддрд┐ рдШреЛрд╖рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИред рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдФрд░ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рдЬреЛрд░ред
рдФрд░ public
/ pub
рдПрдХ рдРрд╕рд╛ рд╕рд░реНрд╡рд╡реНрдпрд╛рдкреА рдХреНрд╡рд╛рд▓реАрдлрд╛рдпрд░ рд╣реИ, рдРрд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ (рдореЗрд░реЗ рд▓рд┐рдП!) рдЬреИрд╕реЗ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП "рдпрд╣ рдЯреЛрдХрд░рд╛ рд╕реЗ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ"ред рдЗрд╕рдХрд╛ рдЕрд░реНрде рдпрд╣ рд╣реИ рдХрд┐ "рдпрд╣ рдореЗрд░реЗ рд╕рдВрджрд░реНрдн рдХреЗ рдареАрдХ рдмрд╛рд╣рд░ рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣рд╛ рд╣реИ", рдЬреИрд╕рд╛ рдХрд┐ struct
рд╕рджрд╕реНрдп рджреГрд╢реНрдпрддрд╛ рдХреЛ рдЕрд░реНрд╣рддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣реИ (рдФрд░ рдЕрдЧрд░ рдореИрдВ рдЧрд▓рдд рд╣реВрдВ рддреЛ рдореБрдЭреЗ рд╕рд╣реА рдХрд░реЗрдВ рд▓реЗрдХрд┐рди рдореИрдВ рдирд╣реАрдВ рдХрд░рддрд╛ ' рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЙрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╢рдмреНрджрд╛рд░реНрде рдмрджрд▓ рд░рд╣реЗ рд╣реИрдВ)ред
рдФрд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ/рдкрдм рдПрдХ рдРрд╕рд╛ рд╕рд░реНрд╡рд╡реНрдпрд╛рдкреА рдХреНрд╡рд╛рд▓реАрдлрд╛рдпрд░ рд╣реИ, рдРрд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ (рдореЗрд░реЗ рд▓рд┐рдП!) рдЬреИрд╕реЗ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП "рдпрд╣ рдЯреЛрдХрд░рд╛ рд╕реЗ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ"ред рдЗрд╕рдХрд╛ рдЕрд░реНрде рдпрд╣ рд╣реИ рдХрд┐ "рдпрд╣ рд╕рд┐рд░реНрдл рдЙрд╕ рд╕рдВрджрд░реНрдн рдХреЗ рдмрд╛рд╣рд░ рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдореИрдВ рд╣реВрдВ", рдЬреИрд╕рд╛ рдХрд┐ рдХреНрд╡рд╛рд▓реАрдлрд╛рдЗрдВрдЧ рд╕реНрдЯреНрд░рдХреНрдЪрд░ рд╕рджрд╕реНрдп рджреГрд╢реНрдпрддрд╛ рдореЗрдВ рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣реИ (рдФрд░ рдЕрдЧрд░ рдореИрдВ рдЧрд▓рдд рд╣реВрдВ рддреЛ рдореБрдЭреЗ рд╕рд╣реА рдХрд░реЗрдВ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЕрд░реНрдерд╢рд╛рд╕реНрддреНрд░ рд╣реИрдВ рд╣реИрдВ рдЙрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдмрджрд▓ рд░рд╣рд╛ рд╣реИ)ред
pub
рдХрд╛ рдЕрд░реНрде рд╣рдореЗрд╢рд╛ "рдпрд╣ рдЯреЛрдХрд░рд╛ рд╕реЗ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ" - рдпрд╣ рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдРрд╕рд╛ рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЗрддрдиреЗ рд╕рд╛рд░реЗ рд▓реЛрдЧ рдЕрдиреНрдпрдерд╛ рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпреЛрдВ pub(crate)
рджреГрд╢реНрдпрддрд╛ рд╕реНрддрд░ рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рдзрдХреНрдХрд╛ рджрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред
рдкрдм рдХрд╛ рд╣рдореЗрд╢рд╛ рдорддрд▓рдм рд╣реЛрддрд╛ рд╣реИ "рдЗрд╕реЗ рдЯреЛрдХрд░рд╛ рд╕реЗ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ"
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдордЭ рдХреБрдЫ рднреНрд░рдо рднреА рдкреИрджрд╛ рдХрд░ рд╕рдХрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкреВрд░реА рддрд╕реНрд╡реАрд░ рдирд╣реАрдВ рд╣реИред pub
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрд░реНрде рд╣реИ "рдореБрдЭреЗ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрд╛рд╣рд░ рдХреМрди рдЗрд╕ рдЖрдЗрдЯрдо/рдлрд╝реАрд▓реНрдб/рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ"ред рдЯреЛрдХрд░рд╛ рд╕реЗ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЕрднреА рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдЖрдЗрдЯрдо рдХреЗ рдкрде рдореЗрдВ рднреА рд╡рд╣реА pub
рд╕рдВрд╢реЛрдзрдХ рд╣реЛрдВред
рдпрд╣ рд╡рд┐рд╡рд░рдг рдХрдИ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдХрд╛рдлреА рд╕рд╛рдорд╛рдиреНрдп рд╣реИред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВ unreachable_pub
рд▓рд┐рдВрдЯ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕реБрдХ рдирд╣реАрдВ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЗрддрдирд╛ рдЖрдЧреЗ рдмрдврд╝рд╛ рд░рд╣рд╛ рд╣реИред рдЕрдЧрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдкреНрд░рдХрд╛рд░ рд╣реИ рдЬреЛ рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдкрд░ рдХрднреА рдирд┐рд░реНрдпрд╛рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдкрд░реЗрд╢рд╛рди рдХрд░рдирд╛ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕рдХреА рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рд╣реИ pub
рдмрд╕ рд╢реЛрд░ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред
@rpjohnst рдХреНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХрд╛ рд╣рдореЗрд╢рд╛ рдорддрд▓рдм рд╣реЛрддрд╛ рд╣реИ? рдХреНрдпрд╛ рдпрд╣ рдЯреЛрдХрд░реЗ рдХреЗ рдКрдкрд░ рд╕реЗ " super
рд╕реЗ рджреГрд╢реНрдпрдорд╛рди" рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдирд╣реАрдВ рдереА, рдЬрд┐рд╕рдиреЗ рдПрдХ рддрддреНрд╡ рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛, рдФрд░ рдкрддреНрддреА рддрддреНрд╡ рдХреЛ рд╕реНрд╡рдпрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдпреЛрдЧреНрдп рдирд╣реАрдВ рдмрдирд╛рдпрд╛ pub
?
рдирд╣реАрдВ, рдпрд╣ рдкреВрд░реА рдХрд╣рд╛рдиреА рдирд╣реАрдВ рд╣реИ, рдФрд░ @seanmonstar рдХрд╛ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдмрд╛рдХреА рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдЕрдкрд╡рд╛рдж reexports рд╣реИ- рдЖрдк pub use
рдХреБрдЫ рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рдореВрд▓ рдореЙрдбреНрдпреВрд▓ рдирд┐рдЬреА рд╣реИрдВред рдПрдХ рдЕрдЬреАрдм рдЙрджрд╛рд╣рд░рдг рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╣реИ , рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ pub
рдЖрдЗрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ, рднрд▓реЗ рд╣реА рдЙрд╕рдХреЗ рдореВрд▓ рдореЙрдбреНрдпреВрд▓ рдирд┐рдЬреА рд╣реЛрдВред
рдФрд░ рджреВрд╕рд░реА рджрд┐рд╢рд╛ рдореЗрдВ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, pub(crate)
рдФрд░ рдХрдо рджреГрд╢реНрдпрддрд╛ рдХреЛ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдмрд╛рдпрдкрд╛рд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ- рдЖрдк pub use
рдХреБрдЫ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ pub
рдирд╣реАрдВ рд╣реИ, рднрд▓реЗ рд╣реА pub use
рдЦреБрдж рдЯреЛрдХрд░реЗ рдХреЗ рдмрд╛рд╣рд░ рд╕реЗ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗ рд░рд╣рд╛ рд╣реИред
рддреЛ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреА рдЕрдкрдиреА рджреГрд╢реНрдпрддрд╛ рд╕реАрдзреЗ рдЙрд╕рдХреА super
рдХреА рджреГрд╢реНрдпрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдЗрд╕рдХреА "рдКрдкрд░реА рд╕реАрдорд╛" рдХрд╣реАрдВ рднреА рджреГрд╢реНрдпрддрд╛ рд╣реИред
рдУрд╣ рдареАрдХ рд╣реИ, рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдореЗрд░реЗ рдорди рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рднреЛрд▓реА рдореЙрдбрд▓ рдереАред рдпрд╣ "рдкрдм рдХреЗ рд╡рд░реНрддрдорд╛рди рдЕрд░реНрде" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд┐рдЫрд▓реА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред
рд╣рдордиреЗ рдЖрдЬ @rust-lang/lang рдмреИрдардХ рдореЗрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА:
crate::foo::bar
рдкрдереЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдпреБрдХреНрдд рд╣реЛрдиреЗ рдкрд░ рднреНрд░рдо рдкреИрджрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИредstruct Foo ( crate :: foo :: Bar )
рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕ рддрд░рд╣ рдХрд╛ рддрд░реАрдХрд╛ рд╣реИ -- рдХреНрдпрд╛ рдпрд╣ (crate::foo::Bar)
рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдирд┐рдЬреА рдХреНрд╖реЗрддреНрд░ рд╣реИ рдпрд╛ рдпрд╣ crate
рдлрд╝реАрд▓реНрдб рд╣реИ рдкреНрд░рдХрд╛рд░ ::foo::Bar
?рдЙрддреНрддрд░: рд╣рдо рдЗрд╕реЗ рдПрдХ рдкрде (рдЦреЗрд▓ рдХрд╛ рдореИрджрд╛рди ) рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╣реИрдВред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ .. рд╢рд╛рдпрдж рдореЗрд░реЗ рд▓рд┐рдП рдареАрдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ ::foo::bar
рдкрде рддреЗрдЬреА рд╕реЗ рджреБрд░реНрд▓рдн рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред
рд╣рдо рдореЗрдВ рд╕реЗ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдХреАрд╡рд░реНрдб рдХреА рдкрд╕рдВрдж рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрджреЗрд╣ рд╣реИ, рдФрд░ рдХреНрдпрд╛ рдпрд╣ рдХреНрд░реЗрдЯ :: рдлреВ :: рдмрд╛рд░ рдкрде рдХреЗ рд╕рд╛рде рд╕рдВрдпреБрдХреНрдд рд╣реЛрдиреЗ рдкрд░ рднреНрд░рдо рдкреИрджрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
@nikomatsakis рдХреНрдпрд╛ рд╣рдореЗрдВ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдиреЛрдЯреНрд╕ рдпрд╛ рд╕рд╛рд░рд╛рдВрд╢ рдорд┐рд▓рддреЗ рд╣реИрдВ? рдЗрд╕ рд╕реВрддреНрд░ рдХреЗ рднреАрддрд░, рдореИрдВрдиреЗ рдЕрдкрдиреА рдХрдо рд╕реЗ рдХрдо рдПрдХ рдЪрд┐рдВрддрд╛ [0] рдкрд░ рдЪрд░реНрдЪрд╛ рдирд╣реАрдВ рдХреА рд╣реИ рдФрд░ рди рд╣реА рдХрд╛рдЙрдВрдЯрд░ рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдкрд░ рдЕрдзрд┐рдХ рдЪрд░реНрдЪрд╛ рдХреА рд╣реИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ [0] рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рдкрд░ рд╡рд┐рднрд┐рдиреНрди рдЖрдВрддрд░рд┐рдХ рдзрд╛рдЧреЛрдВ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реЛ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рдХреБрдЫ рд╣реИред
[0] рдПрдХ рд╕рдорд╛рдирд╛рдВрддрд░ рджреГрд╢реНрдпрддрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдмрдирд╛рдХрд░ pub(...)
рдХреЛ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдореЗрдВ рдзрдХреЗрд▓рддреЗ рд╣реБрдП рдЗрд╕ рднрд╛рд╡рдирд╛ рдХреЗ рд╕рд╛рде рдХрд┐ рд╣рдореЗрдВ pub(...)
рдХреЛ рд╣рдЯрд╛ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдЧрд▓реЗ рд▓рдЧрд╛ рд▓реЗрдирд╛ рдЪрд╛рд╣рд┐рдП
@epage
@nikomatsakis рдХреНрдпрд╛ рд╣рдореЗрдВ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдиреЛрдЯреНрд╕ рдпрд╛ рд╕рд╛рд░рд╛рдВрд╢ рдорд┐рд▓рддреЗ рд╣реИрдВ?
рдХреЛрдИ рдЦреЗрдж рдирд╣реАрдВ; рд╣рдордиреЗ рдЗрд╕ рдкрд░ рдмрд╣реБрдд рд▓рдВрдмреЗ рд╕рдордп рддрдХ (рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдХреБрдЫ рдорд┐рдирдЯ) рдЪрд░реНрдЪрд╛ рдирд╣реАрдВ рдХреА рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдореАрдЯрд┐рдВрдЧ рдиреЛрдЯ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ред
@eddyb рдиреЗ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ my
рдХреЛ рдПрдХ рдЫреЛрдЯреЗ рдФрд░ рдЕрдзрд┐рдХ рдПрд░реНрдЧреЛрдиреЛрдорд┐рдХ рджреГрд╢реНрдпрддрд╛ рд╕рдВрд╢реЛрдзрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдмрддрд╛рдпрд╛ред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛ mine
рд▓реЗрдХрд┐рди my
рдФрд░ рднреА рдЫреЛрдЯрд╛ рд╣реИ, рдкреНрдпрд╛рд░рд╛!
(рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд▓рд┐рдП, рдореИрдВ рдмреИрдардХ рдореЗрдВ рдЖрдзрд╛ рдордЬрд╛рдХ рдХрд░ рд░рд╣рд╛ рдерд╛)
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ : рдпрджрд┐ my
рдЯреЛрдХрд░рд╛-рд╕реНрдерд╛рдиреАрдп рд╣реИ, рддреЛ рдХреНрдпрд╛ рд╣рдо pub
рдХреЛ our
рд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ? рдЙрджрд╛рд╣рд░рдг:
our struct Foo(my FooImpl);
(рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд▓рд┐рдП, рдореИрдВ рдмреИрдардХ рдореЗрдВ рдЖрдзрд╛ рдордЬрд╛рдХ рдХрд░ рд░рд╣рд╛ рдерд╛)
рдЕрдЧрд░my
рдХреНрд░реЗрдЯ-рд▓реЛрдХрд▓ рд╣реИ, рддреЛ рдХреНрдпрд╛ рд╣рдоpub
рдХреЛour
рд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ?
рдкрд░реНрд▓: рдЪреБрдЯрдХреБрд▓реЛрдВ рдХреЛ рд╣рдХреАрдХрдд рдмрдирд╛рдирд╛ред
https://perldoc.perl.org/functions/my.html
https://perldoc.perl.org/functions/our.html
my
рдЕрдЪреНрдЫрд╛ рд╣реИ (рдФрд░ рдкрд╣рд▓реЗ рдЖрдпрд╛ рд╣реИ), рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ local
, internal
, рдпрд╛ рдЬреЛ рдХреБрдЫ рднреА (рдпрд╛ рдореЗрдВ) рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдЗрд╕рдХрд╛ рдорд╛рдорд▓рд╛, рдЬрд┐рд╕рдХрд╛ ), рдЬреЛ рдкреВрд░реА рд╕рдорд╕реНрдпрд╛ рд╣реИред
рд╣рдо рдЬрд┐рд╕ рдЕрдЬреАрдм рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИрдВ, рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рддреАрди рдЧреЛрдкрдиреАрдпрддрд╛ рд╕реНрддрд░ рдЪрд╛рд╣рддреЗ рд╣реИрдВ - "рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ", "рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐рдЬреА", рдФрд░ "рдХрд╣реАрдВ рдмреАрдЪ рдореЗрдВ" (рдпрд╛рдиреА, рдЯреЛрдХрд░рд╛-рд╕реНрддрд░) - рдФрд░ рдкрд╢реНрдЪ рд╕рдВрдЧрддрддрд╛ рдмрд╛рдзрд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг рд╣рдо рдЗрдирдореЗрдВ рд╕реЗ рдкрд╣рд▓рд╛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ pub
рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде рдлрдВрд╕ рдЧрдпрд╛ рд╣реИ, рджреВрд╕рд░рд╛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реИ, рдФрд░ рддреАрд╕рд░реЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдирдпрд╛ рд▓реЗрдХрд░ рдЖрдирд╛ рд╣реИред рдФрд░ рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдРрд╕реЗ рдХрдИ рд╢рдмреНрдж рдирд╣реАрдВ рд╣реИрдВ рдЬреЛ "рди рддреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡реИрд╢реНрд╡рд┐рдХ рд╣реИрдВ, рди рд╣реА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдерд╛рдиреАрдп рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрд╣реАрдВ рдмреАрдЪ рдореЗрдВ" рд╕рдЯреАрдХрддрд╛ рдХреЗ рд╕рд╛рде рд╣реИрдВред
рдФрд░ crate
рдХреАрд╡рд░реНрдб рд╡рд╣ рд╣реИ рдЬреЛ рдЗрд╕реЗ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ , рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдирд╛рдо рдореЗрдВ рд╕рд╣реА рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджрд╛рдпрд░рд╛ рдХреНрдпрд╛ рд╣реИ - рдпрд╣ рдЯреЛрдХрд░рд╛ рд╣реИред рд▓реЗрдХрд┐рди (рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЖрдк "рдореИрдВ рдЗрд╕реЗ рдЬрд╛рдирддрд╛ рдерд╛ !" рдХреЛ рддреЛрдбрд╝ рджреЗрдВ), рдЗрд╕рдХреА рдХреАрдордд рдпрд╣ рд╣реИ рдХрд┐ рдЕрдм рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рджреГрд╢реНрдпрддрд╛ рд╕рдВрд╢реЛрдзрдХ рд╣реИ ред "рдкрдм" "рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ" рдХреЗ рд▓рд┐рдП рдЫреЛрдЯрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдХреЛрдИ рднреА рд╕рдордЭ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдЕрдиреНрдп рднрд╛рд╖рд╛ рдореЗрдВ "рдЯреЛрдХрд░рд╛" (рдЙрд╕ рдирд╛рдо рдХреЗ рд╕рд╛рде) рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдирд╣реАрдВ рд╣реИ; crate struct
рдХрд╛ рдХреЛрдИ рдЕрд░реНрде рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдХреЛрдИ рдЖрд╢рд╛ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реАрдЦрдирд╛ рд╣реЛрдЧрд╛ред 1 рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ "рднрд╛рд╖рд╛ рд╡рд┐рдЪрд┐рддреНрд░рддрд╛ рдмрдЬрдЯ" рд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рдирд┐рдХрд╛рд╕реА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд░рд╛рдп рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╢реЗрд╖ рд░рд╛рд╢рд┐ рдЕрднреА рднреА рд╕рдХрд╛рд░рд╛рддреНрдордХ рд╣реИред
рдЗрд╕ рдмреАрдЪ pub(crate)
рджреЛрдиреЛрдВ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ - рдпрд╣ рдЖрдкрдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рджреГрд╢реНрдпрддрд╛ рд╕рдВрд╢реЛрдзрдХ рд╣реИ, рдФрд░ рдпрд╣ рдЖрдкрдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рджрд╛рдпрд░рд╛ рдХреНрдпрд╛ рд╣реИ - рд▓реЗрдХрд┐рди рдмрджрд▓реЗ рдореЗрдВ рдпрд╣ рд▓рдВрдмрд╛ рдФрд░ рдЕрдЬреАрдм рд╣реИред
рддреЛ рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рд╡рд┐рдзреЗрдп рдХрд╛ рдЖрдХрд╛рд░ рд╣реИред
1 (рдКрдкрд░ рдХрд┐рд╕реА рдиреЗ рдПрдХ рдмрд╛рддрдЪреАрдд рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЬреЛ рдЪрд▓рд╛ рдЧрдпрд╛, "рдЙрдиреНрд╣реЛрдВрдиреЗ рдкреВрдЫрд╛ рдХрд┐ crate
рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ, рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдмрддрд╛рдпрд╛ рдХрд┐ рдпрд╣ рдПрдХ рджреГрд╢реНрдпрддрд╛ рд╕рдВрд╢реЛрдзрдХ рд╣реИ, рдФрд░ рдпрд╣ рдЗрд╕рдХрд╛ рдЕрдВрдд рдерд╛ред рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд, рдФрд░ рд╕рдВрднрд╡рддрдГ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп, рд╕реНрдерд┐рддрд┐ рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдмрдЧрд▓ рдореЗрдВ рдХреЛрдИ рд░реБрд╕реНрддрд╕рд┐рдпрди рдмреИрдард╛ рд╣реЛред)
рдПрдлрдбрдмреНрд▓реНрдпреВрдЖрдИрдбрдмреНрд▓реНрдпреВ, рдореИрдВ рдХреНрд░реЗрдЯ-рд╕реНрдерд╛рдиреАрдп рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП our
рдпрд╛ my
рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдареАрдХ рд╣реВрдВред
our
рдПрдХ рддреАрди-рдЕрдХреНрд╖рд░ рд╡рд╛рд▓рд╛ рдХреАрд╡рд░реНрдб рд╣реИ рдФрд░ pub
~ рдФрд░ рдкрд░реНрд▓ ~ рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдВрд░реЗрдЦрд┐рдд рд╣реИред
рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗ рдмрд╣реБрдд рдЕрдиреМрдкрдЪрд╛рд░рд┐рдХ рд▓рдЧрддреЗ рд╣реИрдВ (рдореВрд▓ рдЕрдВрдЧреНрд░реЗрдЬреА рдмреЛрд▓рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП?)?
рд▓реЛрдЧ intern
рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕рд╛ рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реИрдВ? рдпрд╣ crate
рд╕реЗ рдЕрдзрд┐рдХ рд▓рдВрдмрд╛ рдПрдХ рд╡рд░реНрдг рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд░рд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдирдП рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП crate
рд╕реЗ рдЕрдзрд┐рдХ рд╕рд╣рдЬ рд╣реЛрдЧрд╛ рдФрд░ extern
рдХреАрд╡рд░реНрдб рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЕрдЪреНрдЫреА рд╕рдорд░реВрдкрддрд╛ рд╣реИред
IMO our
рдФрд░ my
рдореЗрдВ local
рдФрд░ internal
рдЬреИрд╕реА рд╣реА рдХрдордЬреЛрд░реА рд╣реИ: рд╡реЗ рдЕрдкрдиреЗ рджрд╛рдпрд░реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИрдВред local
рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХрд╛рдлреА рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рджрд╛рдпрд░рд╛ рд╕реНрдерд╛рдиреАрдп рдЪрд░реЛрдВ рд╕реЗ рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рднрд┐рдиреНрди рд╣реЛрдЧрд╛, рдЬрд╣рд╛рдВ рд╕реНрдерд╛рдиреАрдп рдХрд╛ рдЕрд░реНрде рдирд┐рдЬреА рд╕реЗ рд╕рдВрд▓рдЧреНрди рджрд╛рдпрд░реЗ рдореЗрдВ рд╣реЛрдЧрд╛, рдЬреЛ рдХрд┐рд╕реА рдЖрдЗрдЯрдо рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рд╣реЛрдЧрд╛, рдЯреЛрдХрд░рд╛ рдирд╣реАрдВред рдореБрдЭреЗ internal
рдереЛрдбрд╝рд╛ рдЕрд╡рд┐рд╢рд┐рд╖реНрдЯ рд▓рдЧрддрд╛ рд╣реИред рдХрд┐рд╕ рд▓рд┐рдП рдЖрдВрддрд░рд┐рдХ? рдореЙрдбреНрдпреВрд▓? рдкреНрд░рд╛рд░реВрдк? рдЯреЛрдХрд░рд╛? рдпрд╣ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЙрди рднрд╛рд╖рд╛рдУрдВ рд╕реЗ рдЖрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рджреВрд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╣реЛред our
рдФрд░ my
рдФрд░ рднреА рдЕрд╕реНрдкрд╖реНрдЯ рд╣реИрдВред рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд crate
рджрд╛рдпрд░реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд╣реИред
pub(extern)
рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдкреНрд░рд╢реНрди рд╣реИред рдХреНрдпрд╛ рдпрд╣ рдХрднреА рднреА extern "C" fn foo() {}
pub
рдХреЗ рдмрд┐рдирд╛ рд╣реЛрдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рд╣реИ? рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рд╣рдо рдЕрдкрдиреЗ рдирд┐рдпрдорд┐рдд, рдЧреИрд░ "рд╕реА" рдЕрдмреА рд░рд╕реНрдЯ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рднреА extern fn foo() {}
рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдПрдХреАрдХреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдмрд╛рд╣рд░реА рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рдПрдлрдПрдлрдЖрдИ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдирд╣реАрдВ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ extern
рдЕрдм desugars pub(extern)
, pub
рдЖрдЬ рдХреА рддрд░рд╣ рд╣реА рд░рд╣рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЬрдм рдЖрдЗрдЯрдо рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рддреЛ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рдПрдмреАрдЖрдИ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ pub
рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдЯ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ pub(extern)
рдпрд╛ extern
рдХреЗ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред
extern fn foo() {
println!("Just called a Rust function from Rust!");
}
#[no_mangle]
extern "C" fn foo_from_c() {
println!("Just called a Rust function from C!");
}
рдореИрдВрдиреЗ рдпрд╣ рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЬреЛ рдзрд╛рдЧреЗ рдкрдврд╝реЗ рд╣реИрдВ рдЙрдирдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЕрдЧрд░ рдЗрд╕ рдкрд░ рдкрд╣рд▓реЗ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИ рддреЛ рдХреНрд╖рдорд╛ рдХрд░реЗрдВ!
рдХреНрдпрд╛ рд╕рд╛рдордиреЗ рдкрдм рдХреЗ рдмрд┐рдирд╛
extern "C" fn foo() {}
рд╣реЛрдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рд╣реИ?
рд╣рд╛рдВ- рдХрднреА-рдХрднреА рдЖрдк рдХреЗрд╡рд▓ foo
рдХрд╛ рдЙрдкрдпреЛрдЧ рдлрд╝рдВрдХреНрд╢рди рдкреЙрдЗрдВрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдПред рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд┐рдВрдЯреИрдХреНрд╕ extern fn foo() {}
рдХреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреБрди: рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ extern
рдмрд┐рдирд╛ "C"
рд╕реА рдПрдмреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдореБрд╣рд╛рд╡рд░реЗрджрд╛рд░ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрд╣рд╛рдВ рдПрдХ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдмрд╣реБрдд рд╕рдордп рдкрд╣рд▓реЗ рдЖрдпрд╛ рдерд╛ - рд╢рд╛рдпрдж рдЕрдм рд╣рдо рдЗрд╕реЗ рдПрдХ рдФрд░ рдореМрдХрд╛ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдирдП рдореЙрдбреНрдпреВрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдХреБрдЫ рдкрд╣рд▓реБрдУрдВ рдХреЛ рдХреНрд░рд┐рд╕реНрдЯрд▓реАрдХреГрдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?
// Public to the world.
pub struct Foo;
// Private to the crate.
priv struct Foo;
// Basically not visible at all (only inside the module).
struct Foo;
рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдЕрдЧрд░ рдХреЛрдИ рд╕реЛрдЪрддрд╛ рд╣реИ:
priv
рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рддрд┐рдмрдВрдзрд╛рддреНрдордХ рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреА рдШреБрдЯрдиреЗ-рдЭрдЯрдХреЗ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдереА, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рджреЛ рдмрд┐рдВрджреБ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ:
рд░рд╕реНрдЯ рдореЗрдВ, рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдиреЗрдорд╕реНрдкреЗрд╕ рдХреЗ рддрд╣рдд рдЪреАрдЬреЛрдВ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдХреНрд░реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рддреЛ рдЕрдЧрд░ рдПрдХ рдЯреЛрдХрд░рд╛ "рдПрдкреАрдЖрдИ рдХреА рдЗрдХрд╛рдИ" рд╣реИ, рддреЛ рдпрд╣ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдмрдХреНрд╕реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреГрд╢реНрдпрддрд╛ рд╕рдВрд╢реЛрдзрдХ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬрд╛рд╡рд╛ рдиреЗ private
рдХреА рдЧрд▓рддреА рдХреА рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ "рдХрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдирд┐рдЬреА" рдФрд░ рдХреЛрдИ рджреГрд╢реНрдпрддрд╛ рд╕рдВрд╢реЛрдзрдХ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ "рдкреИрдХреЗрдЬ рдХреЗ рдЕрдВрджрд░ рджреГрд╢реНрдпрдорд╛рди"ред рдореЗрд░реЗ рд▓рд┐рдП, рдпрд╣ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рддрд┐рдмрдВрдзрд╛рддреНрдордХ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдВрд╢реЛрдзрдХ (рдпрд╛рдиреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ) рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред
@stjepang рдореИрдВ рддрд░реНрдХ рджреВрдВрдЧрд╛ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрдиреНрдп рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ "рдирд┐рдЬреА" рдХрд╛ рдПрдХ рдЕрд╕рдореНрдмрджреНрдз рд░рд╛рдЬреНрдп рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдкреНрд░рддрд┐рдмрдВрдзрд╛рддреНрдордХ рдЕрд░реНрде рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред рдирд┐рдЬреА-рдбрд┐рдлрд╝реЙрд▓реНрдЯ-рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдкреЗрдХреНрдЯреНрд░рдо рд╕рд╛рдорд╛рдиреНрдп рдЕрд░реНрдереЛрдВ рдореЗрдВ рд╕рдВрд░рдХреНрд╖рд┐рдд-рдЙрдкрд▓рдмреНрдз-рд╡рд┐рдЬреНрдЮрд╛рдкрд┐рдд рдХреЗ рд╕рдорд╛рди рд╣реИред
рдПрдХ рдирд┐рдЬреА рдХреНрд▓рдм рдПрдХ рдХреНрд▓рдм рд╕реЗ рдЕрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реЛрддрд╛ рд╣реИред
рдПрдХ рдирд┐рдЬреА рдЕрдзрд┐рдирд┐рдпрдо рдХрд╛ рддрд╛рддреНрдкрд░реНрдп рд╣реИ рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдЫрд┐рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдП рдЧрдП рдереЗред
рдПрдХ рдирд┐рдЬреА рд╡рд┐рдЪрд╛рд░ рдПрдХ рдирд┐рд░рд░реНрдердХ рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдЬреЛ рд╣рдореЗрдВ рдЯреЗрд▓реАрдкреИрдереА рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╛рд╕ рдХреА рд╡рд┐рдлрд▓рддрд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реЛрдЧ рдЗрд╕реЗ рдПрдХ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рд╕рд╛рдЭрд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдПрдХ рдЕрдиреБрднрд╡рд╣реАрди рднрд╛рд╖рд╛ рд╕реАрдЦрдиреЗ рд╡рд╛рд▓реЗ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рдпрд╣ рднреА рд╕реБрдЭрд╛рд╡ рджреВрдВрдЧрд╛ рдХрд┐ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреАрд╡рд░реНрдб рдХрдИ рд╕рдВрджрд░реНрдн-рдирд┐рд░реНрднрд░ рдЕрд░реНрдереЛрдВ рд╡рд╛рд▓реЗ рдПрдХрд▓ рдХреАрд╡рд░реНрдб рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рд╕рдВрдЬреНрдЮрд╛рдирд╛рддреНрдордХ рдмреЛрдЭ рд╕реЗ рдХрдо рд╣реИред рджреЗрдЦреЗрдВ рдХреЙрд╕реНрдЯреЗрд▓реЛ, рдПрд▓ рдФрд░ рдПрдмреЙрдЯ, рдмреА "рд╣реВ рдЗрдЬ рдСрди рдлрд░реНрд╕реНрдЯ", 1938ред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ my
рдФрд░ our
рдореЗрдВ рдРрд╕реЗ рдЕрд░реНрде рд╣реЛрдВрдЧреЗ рдЬреЛ рд╣рдо рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЗрдиреНрд╣реЗрдВ рдХреАрд╡рд░реНрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЖрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдХрдард┐рдирд╛рдИ рдХреЛ рдЕрд▓рдЧ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╡реЗ рдПрдХ рдордиреЛрд░рдВрдЬрдХ рдордЬрд╛рдХ рдмрдирд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдореЗрдВ рдЙрд╕ рд░рд╛рд╕реНрддреЗ рдкрд░ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдореБрдЭреЗ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд▓реЛрдЧ рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ crate
рджреГрд╢реНрдпрддрд╛ рдХрд╛ рдХреНрдпрд╛ рдЕрд░реНрде рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛ рдХреЛрдб рд╕реЗ рдЖрддреА рд╣реИ рдЬрд┐рд╕реЗ рдкрдврд╝рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ:
crate struct S(crate crate::Foo);
crate struct S(crate ::Foo);
рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЙрдиреНрд╣реЗрдВ рд╢реЛрд╕реНрдЯреЙрдкрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рджреЗрдЦрддрд╛, рд▓реЗрдХрд┐рди рд╡реЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдпрд╣рд╛рдВ рд╡реИрдз рдЪрд┐рдВрддрд╛рдПрдВ рд╣реИрдВред
рд╕реНрдХреИрд▓рд╛ рднрд╛рд╖рд╛ рдореЗрдВ pub(path)
рдХрд╛ рд╕рдорд╛рдирд╛рдВрддрд░ рд╣реИ, рдЬреЛ private[path]
рд╣реИ, рдЬреЛ рдХрд╛рдлреА рд╕рдорд╛рди рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдкрдврд╝рддрд╛ рд╣реИ, "рдпрд╣ рдЖрдЗрдЯрдо рдирд┐рдЬреА рд╣реИ, рдХреЗрд╡рд▓ рд▓реЛрдЧреЛрдВ рдХреЛ $path рдХреЗ рднреАрддрд░ рдЗрд╕реЗ рджреЗрдЦрдиреЗ рдХреА рдЗрдЬрд╛рдЬрдд рджреЗрддрд╛ рд╣реИ"ред рд▓реЗрдХрд┐рди рд╕реНрдХрд╛рд▓рд╛ рдореЗрдВ рдХреБрдЫ рдирд┐рдЬреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдиреЛрдЯреЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рд░рд╕реНрдЯ рдореЗрдВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
рдореЗрд░реЗ рд╕рд╛рде рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ friend
s рдХреА C++ рдЕрд╡рдзрд╛рд░рдгрд╛ рднреА рдЙрджрд╛рд╣рд░рдг рдХреЗ рдПрдХ рдЕрдиреНрдп рдмрд┐рдВрджреБ рдХреЗ рд░реВрдк рдореЗрдВ pub(path)
рдХреЗ рд╕рдорд╛рди рд╣реИред
рдЕрдВрдд рдореЗрдВ, рдореБрджреНрджреЗ рд╣реИрдВ:
crate
рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд╛рдкреЗрдХреНрд╖ рдкрде рдЖрдпрд╛рдд рдФрд░ рджреГрд╢реНрдпрддрд╛ рд╕рдВрд╢реЛрдзрдХ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ,crate
рдХреАрд╡рд░реНрдб pub(...)
рдЬреИрд╕реЗ рдПрдХреАрдХреГрдд рджреГрд╢реНрдпрддрд╛ рд╕рдВрд╢реЛрдзрдХ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рд░реЛрдХрддрд╛ рд╣реИ,pub(crate)
рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдирд╛рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ (рдмрд╣реБрдд рд▓рдВрдмрд╛, рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ)редрд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЧрд╣рд░реА рд╕реЛрдЪ рдХреЗ 5 рдорд┐рдирдЯ рдХреЗ рдмрд╛рдж, рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЗ рд╕рд╛рде рдЖрдпрд╛... :P
_(рдЙрджрд╛рд╣рд░рдг рдХреЗ рддреМрд░ рдкрд░ @
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП)_
<strong i="18">@pub</strong> use crate::Foo;
<strong i="19">@crate</strong> struct Bar;
рдореБрдЭреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдпрд╣ рдХрд╛рдлреА рдмрджрд╕реВрд░рдд рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рдореИрдВ рдпрд╛ рддреЛ @crate
рдпрд╛ pub(crate)
рдЯрд╛рдЗрдк рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред
рдЪреВрдВрдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдирдВрдЧреЗ pub
рдФрд░ extern
рд╣реИрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ crate
рдХреАрд╡рд░реНрдб рдХрд╛рдлреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИ (рд╕рд╛рдорд╛рдиреНрдп public
, protected
рдХреЗ рд╕рд╛рде рднрд╛рд╖рд╛рдУрдВ рд╕реЗ рдЖрдиреЗ рдкрд░ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рдирд╣реАрдВ рд╣реИ private
рдХреАрд╡рд░реНрдб)ред
crate struct Foo;
crate fn path() -> PathBuf { ... }
рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, рдпрд╣ crate
рдЖрдпрд╛рдд рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрдиреЗ рд▓рдЧрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдпрд╣ рдкреАрдЫреЗ рдХреА рдУрд░ рдорд┐рд▓ рдЧрдпрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореБрджреНрджрд╛ рдкрде рдХреА рд╕реНрдкрд╖реНрдЯрддрд╛ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреЗ рд╕рд╛рде рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдХреЗ:
use crate::utils;
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ crate
рдХрд╛ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рдЕрд░реНрде рдирд╣реАрдВ рд╣реИред
рдШреЛрд╖рдгрд╛рддреНрдордХ рдореИрдХреНрд░реЛрдЬрд╝ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕реЗ рдмрдбрд╝реА рдкреНрд░реЗрд░рдгрд╛ рдХреЗ рд╕рд╛рде, рджреГрд╢реНрдпрддрд╛ рд╕рдВрд╢реЛрдзрдХ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХреАрдХреГрдд рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдЦреЛрдЬрдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдореЗрд░реЗ рдкрд╛рд╕ рдирд┐рдореНрди рд╣реЛрдЧрд╛:
use std::io;
use std::path::Path;
use log::info;
use $crate::utils;
crate fn hello() -> io::Result<()> {
utils::rm_rf(Path::new("/"))?;
info!("Goodbye, World!");
}
( self
, super
рдФрд░ crate
рдкрде рдЖрдпрд╛рдд рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдПрдВрдХрд░реЛрдВ рдХреЛ рдПрдХ рдЙрдкрд╕рд░реНрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, $crate
, рдЬреЛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рд╡рд┐рд╢реЗрд╖ рд╣реИрдВ рдФрд░ рдЪрд░ рдХреА рддрд░рд╣ рджреЗрдЦреЛ)
рдЬрдЯрд┐рд▓ рдЙрджрд╛рд╣рд░рдг:
crate struct Foo(crate crate::Bar);
рдмрди рдЬрд╛рддрд╛ рд╣реИ:
crate struct Foo(crate $crate::Bar);
рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдЯреНрд░реИрдХрд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛ рд╣реИ: https://github.com/rust-lang/rust/issues/45388 ред
рдЙрд╕реА рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдЙрд╕реЗ рдмрдВрдж рдХрд░рдирд╛ред
рдХреНрдпрд╛ рдХреЛрдИ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд░рд╕реНрдЯрд╕реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдбреЙрдЧрдлреВрдб рдХрд░ рд░рд╣рд╛ рд╣реИ? crate fn
pub(crate) fn
рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЕрд╕реНрдерд┐рд░ рд╕реБрд╡рд┐рдзрд╛ AFAICT рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдореБрдЭреЗ рдХреЛрдИ рдЕрдЪреНрдЫрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИ рдХрд┐ рд╣рдо рдРрд╕рд╛ рдХреНрдпреЛрдВ рдХрд░реЗрдВрдЧреЗред рдХреНрд▓рд┐рдкреНрдкреА рдФрд░ рд░рд╕реНрдЯрд╕реА рджреЛрдиреЛрдВ рд╣реА рд╣рд░ рд╕рдордп рдЕрд╕реНрдерд┐рд░ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдРрд╕рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╣рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдмрдЧ рдкрдХрдбрд╝рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЙрдирдХрд╛ рдЕрдзрд┐рдХ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдпрд╣ рдорд╣рд╕реВрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИред
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, crate
рдХрд╛ рдЙрдкрдпреЛрдЧ Clippy рдФрд░ rustc рдореЗрдВ рджреГрд╢реНрдпрддрд╛ рд╕рдВрд╢реЛрдзрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рдореЗрдВ рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ pub(crate)
рд╕реЗ рдмреЗрд╣рддрд░ рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдЯреНрд░реИрдХрд┐рдВрдЧ рдореБрджреНрджреЗ рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдЕрдзрд┐рдХрд╛рдВрд╢ рдореБрджреНрджреЗ рдЧреИрд░ рд╣реИрдВ - рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдореБрджреНрджреЗред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ https://github.com/rust-lang/rust/issues/53120#issuecomment -413466129, https://github.com/rust-lang/rust/issues/53120#issuecomment -414392549, рдФрд░ https:/ /github.com/rust-lang/rust/issues/53120#issuecomment -413498376 рдпрд╣ рднреА рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИ рдХрд┐ рджреГрд╢реНрдпрддрд╛ рд╕рдВрд╢реЛрдзрдХ рдХреЗ рд░реВрдк рдореЗрдВ crate
рдмрд╛рд╣рд░ рднреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдЪреВрдВрдХрд┐ рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЪреВрдВрдХрд┐ рднрд╛рд╖рд╛ рдЯреАрдо рдореЗрдВ рд╣рдо рдореЗрдВ рд╕реЗ рдХрдИ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реИрдВ , рдФрд░ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрд░рдПрдлрд╕реА рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ , рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ crate
рдХреЛ рдПрдХ рджреГрд╢реНрдпрддрд╛ рд╕рдВрд╢реЛрдзрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдерд┐рд░ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐ рд╣рдореЗрдВ struct Foo ( crate :: foo :: Bar )
рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреИрд╕реЗ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдХ рдкрде рдХреЗ рд░реВрдк рдореЗрдВ, рдФрд░ рд╢рд╛рдпрдж рдпрд╣ рд╕рд╣реА рд╣реИ )ред
рдПрдлрдбрдмреНрд▓реНрдпреВрдЖрдИрдбрдмреНрд▓реНрдпреВ, рдореИрдВ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд╛рд░реНрдЧреЛ-рдПрди 64 рдореЗрдВ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд░рд╣рд╛ рд╣реИ!
рдореИрдВ рд╣рд░ рд╕рдордп rustc рдореЗрдВ crate
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЫреЛрдЯрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ pub(crate)
рдЬреИрд╕реЗ рдХреЛрд╖реНрдардХ рдирд╣реАрдВ рд╣реИрдВред
рдореБрдЭреЗ рдЕрднреА рднреА рдпрд╣ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдкрдврд╝рддрд╛ рд╣реИред
рдЗрд╕рдореЗрдВ 3 рдЕрдХреНрд╖рд░ рднреА рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП pub
<-> crate
рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд╕рд╛рде рд╕реНрд╡рд░реВрдкрдг рдкрд░рд┐рд╡рд░реНрддрди рдПрдХ рд╕рд╛рде рд╣реЛрддреЗ рд╣реИрдВред
рдореБрдЭреЗ рдЕрдм рднреА our
рдПрдХрддрд░рдлрд╛ рдкрд╕рдВрдж рд╣реИред
@petrochenkov рдЖрдкрдиреЗ рдЬреЛ рд▓рд┐рдЦрд╛ рд╣реИ рдЙрд╕рдХреА рдореЗрд░реА рд╕рдордЭ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк crate
рдХреЛ pub(crate)
рд╕реЗ рдЕрдзрд┐рдХ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди crate
рд╕реЗ рднреА рдмреЗрд╣рддрд░ рдХреБрдЫ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдХреНрдпрд╛ рдпрд╣ рд╕рд╣реА рдЖрдХрд▓рди рд╣реИ?
рдПрдлрдбрдмреНрд▓реНрдпреВрдЖрдИрдбрдмреНрд▓реНрдпреВ, рдореБрдЭреЗ рдЕрднреА рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ intern
рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИред
pub(crate)
рд╕реЗ рдЫреЛрдЯрд╛ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдХ рд╡рд░реНрдг crate
рд╕реЗ рдЕрдзрд┐рдХ рд▓рдВрдмрд╛ рд╣реИ)crate
рд╕реЗ рдмреЗрд╣рддрд░ (IMO) рдкрдврд╝рддрд╛ рд╣реИ (рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрде рдЬреИрд╕реА рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕реЗ crate::foo::bar
)extern
. рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреА рд╕рдорд░реВрдкрддрд╛ рд╣реИinternal
)ред рдХреЛрдЯрд▓рд┐рди, рд╕реА #, рдЖрджрд┐редрдХрд╣рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдореИрдВ рдпрд╣ рднреА рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ pub(crate)
рдХреЛ рдХреБрдЫ рд╕реЗ рдмрджрд▓рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдареАрдХ рд╣реИ рддреЛ рдпрд╣ рддрдп рд╣реЛ рдЧрдпрд╛ рд╣реИ-- рддреАрди рдЕрдХреНрд╖рд░ рдЕрдЪреНрдЫреЗ рд╣реИрдВ, рдФрд░ "рдЗрдВрдЯрд░реНрди" рдЕрдЪреНрдЫрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП... int
ред ;)
рдХреНрдпрд╛ рд╣рдо рдХреГрдкрдпрд╛ crate ::T
(рдПрдХ рд╕реНрдерд╛рди рдХреЗ рд╕рд╛рде) рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
@Centril рд╣рдо рдореЗрдВ рд╕реЗ рдХреБрдЫ #rocket рдкрд░ рдЖрдЧреЗ рдХреЗ рд░рд╛рд╕реНрддреЗ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░ рд░рд╣реЗ рдереЗред рдЖрдкрдХреЗ рд╣рд╛рд▓ рдХреЗ-рдИрд╢ рдЯрд┐рдкреНрдкрдгреА рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдХреНрдпрд╛ рдПрдХ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ FCP рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ?
@jhpratt рдореИрдВ рдПрдХ рд░рд╛рдЗрдЯ-рдЕрдк рдХрд░рдиреЗ рдХрд╛ рдорддрд▓рдм рд░рдЦрддрд╛ рд╣реВрдВ рдФрд░ рдЖрдЦрд┐рд░рдХрд╛рд░ рдЗрд╕реЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдореИрдВ рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдореЗрдВ рд╡реНрдпрд╕реНрдд рд╣реВрдВред рдореИрдВ рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХреБрдЫ рд╕рдордп рдирд┐рдХрд╛рд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛ред
рддреЛ, рдореИрдВ рд╕рд┐рд░реНрдл рдореБрджреНрджреЛрдВ рдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝ рдХрд░ рд░рд╣рд╛ рдерд╛, рдореИрдХреНрд░реЛрдЬрд╝ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдвреВрдВрдв рд░рд╣рд╛ рдерд╛, рдФрд░ рдпрд╣ рдкрд╛рдпрд╛ред
рдЕрдм рдЬрдмрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ pub(crate)
рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рд╕реНрдерд┐рд░ рд╣реИ, рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ, рдХреНрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?
рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрдХ рд▓реИрдВрдЧ-рдЯреАрдо рдмреИрдардХ рдореЗрдВ рд╕рд╛рдордиреЗ рдЖрдпрд╛, рдЬрд╣рд╛рдВ рдЗрд╕ рдкрд░ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рдореБрджреНрджреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рдЬрд┐рд╕реЗ рд╣рдо рдкреБрдирд░реНрдЬреАрд╡рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдмреЛрд▓рддреЗ рд╣реБрдП, рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдлрд╝реАрд▓реНрдб рдФрд░ рдЙрд╕ рддрд░рд╣ рдХреА рдЪреАрдЬрд╝реЛрдВ рдкрд░ crate fn
рдФрд░ crate foo: T
рд▓рд┐рдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рд╕реЗ рдЪреВрдХ рдЬрд╛рддрд╛ рд╣реВрдВред рдпрд╣ pub(crate)
рд╕реЗ рдПрдХ рдмрдбрд╝рд╛ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛рддреНрдордХ рдЕрдВрддрд░ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреЛрдб рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдкрдардиреАрдп рдмрдирд╛рддрд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЙрди рд╕рдВрд░рдЪрдирд╛рдУрдВ рдореЗрдВ рдЬрд┐рдирдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреНрд╖реЗрддреНрд░ рд╣реИрдВред рдореБрдЭреЗ рдпрд╣ рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЙрдЪрд┐рдд рд╕рд╣рд╛рдпрдХ, рд╕рд░рд▓реАрдХреГрдд "рдЧреЛрдкрдиреАрдпрддрд╛ рдореЙрдбрд▓" рдореЗрдВ рдпреЛрдЧрджрд╛рди рджреЗрддрд╛ рд╣реИ -
crate
, рдЪрд╛рд░реЛрдВ рдУрд░ рдЪреАрд░-рдлрд╛рдбрд╝ рдХрд░рдиреА рд╣реЛрдЧреА)pub
)рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рдореЗрдВ, рдЗрд╕ рдХреАрд╡рд░реНрдб рдФрд░ https://github.com/rust-lang/rust/issues/48054 рдореЗрдВ рдкрд░рд┐рдХрд▓реНрдкрд┐рдд рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдмреАрдЪ рдХреБрдЫ рдЕрдВрддрд░ рд╣реИ, рдФрд░ рдореИрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ рдХрд┐ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рд╛рде рдЕрдкрдирд╛рдПрдВред рдореИрдВ рд╡рд┐рд╡рд░рдг рднреВрд▓ рдЬрд╛рддрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╛рдж рд╣реИ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд рдореЙрдбрд▓ рдХреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдереАрдВред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рджрд┐рд╢рд╛ рдореЗрдВ рдкрд╣рд▓рд╛ рдХрджрдо рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдЗрддрд┐рд╣рд╛рд╕ рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬреАрдХрд░рдг рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗ рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗ рдХрд┐ рд╣рдордиреЗ рдЙрди рд╕рднреА рдЪрд┐рдВрддрд╛рдУрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдЙрдард╛рдИ рдЧрдИ рдереАрдВред
рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЪрд┐рдВрддрд╛ рдЬреЛ рдореБрдЭреЗ рдпрд╛рдж рд╣реИ рд╡рд╣ рд╣реИ рд╡рд╛рдХреНрдпрд╛рддреНрдордХ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛
struct Foo(crate ::x)
рдЖрдЬ, рдпрд╣ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ crate ::x
рдкрде crate::x
рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрднрд╡рддрдГ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдорддрд▓рдм crate
рдкрде рдХреЗ рд░реВрдк рдореЗрдВ ::x
рдХреЗ рд╕рд╛рде рджреГрд╢реНрдпрддрд╛ рд╕рдВрд╢реЛрдзрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рдирд╛ рдерд╛ .
рдореИрдВ crate
рд╕рдВрд╢реЛрдзрдХ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреЗрд╢ рдХрд░рдиреЗ рдФрд░ рдЙрдкрд░реЛрдХреНрдд рдорд╛рдорд▓реЗ рдХреА рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЛ рдЖрдЬ рдХреА рддрд░рд╣ рд╣реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдЪреНрдЫреБрдХ рд╣реВрдВред рдЬрдВрдЧ 2018 рдХреЗ рдмрд╛рдж рд╕реЗ, ::foo
рдкрде рдХрд╛рдлреА рд╣рдж рддрдХ рдмрд╣рд┐рд╖реНрдХреГрдд рдХрд░ рджрд┐рдП рдЧрдП рд╣реИрдВ - рд╡реЗ рдЕрднреА рднреА рдореМрдЬреВрдж рд╣реИрдВ рдФрд░ рдореИрдХреНрд░реЛрдЬрд╝ рдЬреИрд╕реЗ рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрджрд░реНрднреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХрд╛рдВрд╢ рд╢рдмреНрдж рдЕрдм рд╣рдо рдкреВрд░реНрдг рдкрде рдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ crate_name::b
рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ crate_name
рдпрд╛ рддреЛ рдХреАрд╡рд░реНрдб crate
рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреНрд░реЗрдЯ рдХрд╛ рдирд╛рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рддреЛ рдпрд╣ рдХрд╛рдлреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ crate::x
(рд╡реНрд╣рд╛рдЯреНрд╕рдПрдк рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдирд╛) рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрде рдХреЗ рд░реВрдк рдореЗрдВ рдерд╛ рдФрд░ рдЗрд╕рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд╕рд╣реА рд╣реИред
рдпрджрд┐ рд╣рдо рд╕рдВрднрд╛рд╡рд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рднреНрд░рдо рдХреЛ рджреВрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╡реНрд╣рд╛рдЗрдЯрд╕реНрдкреЗрд╕-рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд▓рд┐рдВрдЯ рдПрдХ рдЙрдЪрд┐рдд рд╡рд┐рдЪрд╛рд░ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, struct Foo(crate ::x)
рдЪреЗрддрд╛рд╡рдиреА рджреЗрдЧрд╛, рд▓реЗрдХрд┐рди struct Foo(crate::x)
рдирд╣реАрдВ рд╣реЛрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпреЗ рджреЛрдиреЛрдВ рд╕реНрд╡реАрдХреГрдд рдФрд░ рд╕рдордХрдХреНрд╖ рд╣реИрдВред
рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореИрдВ рдПрдХреАрдХреГрдд рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдФрд░ рд╕рд░рд▓ рд▓реБрдХрд╣реЗрдб (1) рдкрд╛рд░реНрд╕рд░ рдЕрдзрд┐рдХ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ; рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдЯреЛрдХрд░рд╛ рдПрдХ рдЯреЛрдХрд░рд╛ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рд╡рд╣рд╛рдБ рдкрд░ crates.io рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЙрди рд╕рднреА рдЪреАрдЬреЛрдВ рдХрд╛ рджреГрд╢реНрдпрддрд╛ _directly_ рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ - рдХреЗрд╡рд▓ pub(_)
рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВред
рд▓реЗрдХрд┐рди рдЕрдЪреНрдЫрд╛, рдореБрдЭреЗ рдХреНрдпрд╛ рдкрддрд╛? рдпрд╣ рдЕрднреА рдПрдХ рдФрд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИред рдЖрдк рд▓реЛрдЧ рдирд┐рд╕реНрд╕рдВрджреЗрд╣ рдЕрдзрд┐рдХ рдЕрдиреБрднрд╡ рдФрд░ рдЕрдзрд┐рдХ рдореВрд▓реНрдпрд╡рд╛рди рд░рд╛рдп рд░рдЦрддреЗ рд╣реИрдВред
@nikomatsakis рдЬрд┐рдЬреНрдЮрд╛рд╕реБ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП intern
рдкрд░ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рдерд╛ (рдпрд╛ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдПрдХ рдирдП рдХреАрд╡рд░реНрдб рдХреЛ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рдХрд░ рд░рд╣рд╛ рд╣реИ?)
рдХреБрдЫ рд╡рд░реНрд╖реЛрдВ рдХреЗ рдмрд╛рдж, рдореЗрд░реА рднрд╛рд╡рдирд╛ рдЕрднреА рднреА рд╡рд╣реА рд╣реИ: рдкрдардиреАрдпрддрд╛ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░реЗрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдХреЛрдб рдХреЛ рд▓рд┐рдЦрдиреЗ рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рдкрдврд╝рддрд╛ рд╣реВрдВред рдФрд░ рдЗрд╕рд▓рд┐рдП, рдореЗрд░реА рд░рд╛рдп рдпрд╣ рд╣реИ рдХрд┐ рдореЗрд░реЗ рд▓рд┐рдП pub(scope)
рдкрдврд╝рдирд╛ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд╣реИ, рдЬреЛ pub
, pub(crate)
, pub(super)
, pub(in proto::h1)
рд╣реЛ рд╕рдХрддрд╛ рд╣реИред .
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрди рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдореЗрдВ рдХреБрдЫ рдирдпрд╛ рдЬреЛрдбрд╝ рд░рд╣реЗ рд╣реИрдВ, рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рд╣рдордиреЗ рдпрд╣ рд╕рдм рдкрд╣рд▓реЗ рдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдХрд╣рд╛ рд╣реИред рдХреНрдпрд╛ рдирд┐рд░реНрдгрдп рдХреБрдЫ рдирдП рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП? рдпрд╛ рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗ рдХрд╣рд╛, рд╣рдо рдХреИрд╕реЗ рддрдп рдХрд░реЗрдВ рдХрд┐ рдЕрдм рдЗрд╕ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рдЕрдкрдирд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд╣рд╛рдБ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рдпрд╣ рдирд╣реАрдВ рдерд╛ рдпрд╛ рдХреБрдЫ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рд╕реНрдердЧрд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛?
рдореБрдЭреЗ рдпрд╣ рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЙрдЪрд┐рдд рд╕рд╣рд╛рдпрдХ, рд╕рд░рд▓реАрдХреГрдд "рдЧреЛрдкрдиреАрдпрддрд╛ рдореЙрдбрд▓" рдореЗрдВ рдпреЛрдЧрджрд╛рди рджреЗрддрд╛ рд╣реИ -
- structs, рдлрд╝реАрд▓реНрдб рдпрд╛ рддреЛ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рд╣реИрдВ (рдмрд╣реБрдд рд╕рдВрдХреАрд░реНрдг рддрд░реНрдХ)
- рдпрд╛ рд╡реЗ рд╡рд░реНрддрдорд╛рди рдЯреЛрдХрд░реЗ рдХреЗ рднреАрддрд░ рдХрд╣реАрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ (
crate
, рдЪрд╛рд░реЛрдВ рдУрд░ рдЪреАрд░-рдлрд╛рдбрд╝ рдХрд░рдиреА рд╣реЛрдЧреА)- рдпрд╛ рд╡реЗ рджреБрдирд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╣реИрдВ (
pub
)
рдореИрдВ рдЗрд╕ рд╕рд░рд▓реАрдХрд░рдг рдХреЗ рд▓рд╛рдн рдХреЛ рд╕рдордЭрдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд╣реВрдВ рдФрд░ рдпрд╣ рдХреИрд╕реЗ рдЕрднрд┐рд╡реНрдпрдВрдЬрдХ рд╢рдХреНрддрд┐ рдореЗрдВ рдиреБрдХрд╕рд╛рди рдХреЗ рд▓рд╛рдпрдХ рд╣реИред рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рдЕрдХреНрд╕рд░ рдЕрдкрдиреЗ рдореВрд▓ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдЖрдЗрдЯрдо рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХрд░рддрд╛ рд╣реВрдВ (рддрд╛рдХрд┐ рднрд╛рдИ рдореЙрдбреНрдпреВрд▓ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗрдВ) рд▓реЗрдХрд┐рди рдкреВрд░реЗ рдЯреЛрдХрд░реЗ рдХреЛ рдирд╣реАрдВред рдЧреНрд░реИрдВрдб-рдкреИрд░реЗрдВрдЯ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХрдо, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдХрднреА-рдХрднреАред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ pub(super)
рдХреЛ рдкрджрд╛рд╡рдирдд рдХрд░рдирд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдиреБрдХрд╕рд╛рди рд╣реЛрдЧрд╛ред
рдЕрд▓рдЧ рд╕реЗ, рдореИрдВ crate
рд╕рдВрдЬреНрдЮрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рдХреНрд╡рд╛рд▓рд┐рдлрд╛рдпрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд░реЛрдорд╛рдВрдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВ рдЬреЛ рдПрдХ рдЖрдЗрдЯрдо рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдореМрдЬреВрдж рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП: рдкрдм (рд▓рд╛рдЗрд╕реЗрдВрд╕), рдЕрд╕реБрд░рдХреНрд╖рд┐рдд, рдФрд░ рдХреЙрдиреНрд╕реНрдЯ (рдЪреАрдВрдЯреА) рд╡рд┐рд╢реЗрд╖рдг рд╣реИрдВред рд╡реЗ рд╕рдВрдЬреНрдЮрд╛рдПрдВ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрдЗрдЯрдо рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдХреАрд╡рд░реНрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдХреНрд╡рд╛рд▓реАрдлрд╛рдпрд░ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрд╕ рдЖрдЗрдЯрдо рдХреА рдкреНрд░рдХреГрддрд┐ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИрдВ: рдлрд╝рдВрдХреНрд╢рди, рд╡рд┐рд╢реЗрд╖рддрд╛, рдореЙрдбреНрдпреВрд▓, ...
рдЯреЛрдХрд░реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рд╣рдо рдирд┐рдкрдЯрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдореЗрдВ рдПрдХ рдЖрдЗрдЯрдо рдкрд░рд┐рднрд╛рд╖рд╛ рдЬреЛ crate
рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ, рдПрдХ рдирдпрд╛ рдЯреЛрдХрд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд░рддреА рд╣реИред
рдПрдХ рдЫреЛрдЯреА рд╕реА рдирдИ рдЬрд╛рдирдХрд╛рд░реА:
рдЬрдВрдЧ-рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдкреВрд░реНрдгрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдФрд░ pub(crate)
рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣рд╛рдпрддрд╛ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ (рд╡реНрдпрдХреНрддрд┐рдкрд░рдХ рд░реВрдк рд╕реЗ) рддреАрди рдХреАрд╕реНрдЯреНрд░реЛрдХ рдкрд░ рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдмрд╣реБрдд рдХрдо рдкрд░реЗрд╢рд╛рди рдХрд░рддрд╛ рд╣реИред
рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдпрд╣рд╛рдВ рдереЛрдбрд╝реА рдирдИ рдЬрд╛рдирдХрд╛рд░реА рдЬреЛрдбрд╝реА рдЬрд╛ рд░рд╣реА рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЕрдЧрд▓рд╛ рдХрджрдо, рдпрджрд┐ рд╣рдо рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рд╣рдо рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВ, рдмрдХрд╛рдпрд╛ рдЪрд┐рдВрддрд╛рдУрдВ рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдВ, рдФрд░ рдЕрдВрддрд┐рдо рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдФрд░ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рд▓реИрдВрдЧ рдЯреАрдо рдХреЗ рд╕рд╛рдордиреЗ рд▓рд╛рдПрдВред рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдпрд╛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛, рдореИрдВ рдЗрд╕реЗ рдЕрдзрд░ рдореЗрдВ рд▓рдЯрдХреЗ рд░рд╣рдиреЗ рд╕реЗ рдердХ рдЧрдпрд╛ рд╣реВрдВред
рдЗрд╕ рдореБрджреНрджреЗ рдХреА рд╕рдВрдкреВрд░реНрдгрддрд╛ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рджреЗрдЦрдиреЗ рд╕реЗ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @nikomatsakis рдХреА рд╣рд╛рд▓рд┐рдпрд╛ рдЯрд┐рдкреНрдкрдгреА рдЪреАрдЬреЛрдВ рдХреЛ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдмрддрд╛рддреА рд╣реИред intern
рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреБрдЫ рдЪреБрдирд┐рдВрджрд╛ рд▓реЛрдЧреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, crate
рд╕рдмрд╕реЗ рддрд╛рд░реНрдХрд┐рдХ рд▓рдЧрддрд╛ рд╣реИ (рдФрд░ RFC 2126 рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛)ред рдПрдХрдорд╛рддреНрд░ рд╕рд╣реА рдорд╛рдпрдиреЗ рдореЗрдВ рдмрдХрд╛рдпрд╛ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ fn foo(crate ::bar)
рдХреЛ рдХреИрд╕реЗ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЬрд╛рдПред
рдПрдХ рдЪреЗрддрд╛рд╡рдиреА-рджрд░-рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реНрд╣рд╛рдЗрдЯрд╕реНрдкреЗрд╕-рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд▓рд┐рдВрдЯ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рддрд╛рд░реНрдХрд┐рдХ рд╕реНрдерд╛рди рд▓рдЧрддрд╛ рд╣реИред crate ::bar
рдХреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдХ рдкрде рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рд░рд╕реНрдЯ 2015 рдФрд░ 2018 рджреЛрдиреЛрдВ рдореЗрдВ рдРрд╕рд╛ рд╣реА рд░рд╣рдирд╛ рд╣реЛрдЧрд╛ред рдореИрдВ рдХрд▓реНрдкрдирд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдмрджрд▓рд╛рд╡ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдореНрдореАрджрд╡рд╛рд░ рд╣реЛрдЧрд╛ред
crate ::bar
рдорд╛рдорд▓рд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдорд╣рддреНрд╡рд╣реАрди рд╣реИ рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрд╛рдХреА рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде рд▓рдЧрд╛рддрд╛рд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд▓рдЧрд╛рддрд╛рд░ рдЪрд░реНрдЪрд╛ рдХрд╛ рдХреЗрдВрджреНрд░ рд░рд╣рд╛ рд╣реИ, рдХреГрдкрдпрд╛ рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рди рджреЗрдВред
рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдпрд╛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛, рдореИрдВ рдЗрд╕реЗ рдЕрдзрд░ рдореЗрдВ рд▓рдЯрдХреЗ рд░рд╣рдиреЗ рд╕реЗ рдердХ рдЧрдпрд╛ рд╣реВрдВред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЕрд╕реНрд╡реАрдХреГрддрд┐ рдХреЗ рд▓рд┐рдП рд╡реЛрдЯ рджреВрдВрдЧрд╛ред
рдореИрдВ rustc рдореЗрдВ pub(crate)
$ рдХреЗ рдмрдЬрд╛рдп рд▓рдЧрд╛рддрд╛рд░ crate
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЫреЛрдЯрд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд╡рдЬреВрдж рдпрд╣ рдЕрднреА рднреА рдЬреНрдпрд╛рджрд╛рддрд░ рд╕рдордп рд╕реЗ рдмрд╛рд╣рд░ рджрд┐рдЦрддрд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЦреЗрддреЛрдВ рдпрд╛ рдЖрдпрд╛рдд рдкрд░, рдФрд░ crate
рдХреЗ рдмреАрдЪ рдЪрдпрди рдХрд░рдирд╛ pub(crate)
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рджреЛ рдмреБрд░рд╛рдЗрдпреЛрдВ рдХреЗ рдмреАрдЪ рдЪрдпрди рдХрд░рдирд╛ рд╣реИ рдЬрдмрдХрд┐ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреМрди рд╕реА рдХрдо рд╣реИред
рд╣рд╛рдВред рдЬреЛ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ @SimonSapin рдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ crate bar
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдирдП рдЯреЛрдХрд░реЗ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд╡рдЬреВрдж рдпрд╣ рдкрдврд╝рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдпрд╣ рдХрд░рддрд╛ рд╣реИред
@petrochenkov рдЖрдкрдХреЛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдПрдХ рд▓рд┐рдВрдЯ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ? рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдЕрдЧрд░ рдореИрдВрдиреЗ рдЗрд╕ рдЪрд░реНрдЪрд╛ рдХреЛ рджреЗрдЦреЗ рдмрд┐рдирд╛ crate ::bar
рджреЗрдЦрд╛, рддреЛ рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ pub(crate) ::bar
рдЬреИрд╕рд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░реЗрдЧрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ _at all_ рдкрдереЛрдВ рдореЗрдВ рд╡реНрд╣реЙрдЯреНрд╕рдПрдк рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред
@jhpratt рдкрде рдЦрдВрдбреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдлреЗрдж рдЬрдЧрд╣ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдкрд╛рд░реНрд╕рд░реНрд╕ рдЯреЛрдХрди рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдЗрд╕рдХреА рдкреНрд░рдХреГрддрд┐ рдХреЗ рдХрд╛рд░рдгред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдпрд╣ рдЙрджреНрдзрд░рдг !, syn рдФрд░ рдХрдИ рдЕрдиреНрдп рдЬреИрд╕реЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреА рдкрд╛рдЧрд▓ рд░рд╛рд╢рд┐ рдХреЛ рддреЛрдбрд╝ рджреЗрдЧрд╛ред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рднреА рдмрдВрдж рдХрд░рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реВрдВрдЧрд╛ред рдореИрдВрдиреЗ рдЗрд╕ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдЕрд░реНрде рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡реНрдпрдХреНрдд рдХрд┐рдП рдЧрдП рдкрд░реНрдпрд╛рдкреНрдд рднреНрд░рдо рдХреЛ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ рд▓рд╛рдн рдкрдардиреАрдпрддрд╛ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рдиреБрдХрд╕рд╛рди рдХреЗ рд▓рд╛рдпрдХ рд╣реИред
рдпрд╣ "рдмрдбрд╝рд╛" (рд▓реЗрдХрд┐рди рдмрдВрдж) рдЯреНрд░реИрдХрд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛ #44660 рдореЗрдВ рдмреЗрд╣рддрд░ рдлрд┐рдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реАрдзреЗ рджреГрд╢реНрдпрддрд╛ рд╕рдВрд╢реЛрдзрдХ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдФрд░ #44660 рдХреЗ рдЕрдиреНрдп рдЙрдк-рдореБрджреНрджреЛрдВ рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реИ:
рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░ рдореБрдЭреЗ рдпрд╛рдж рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдерд╛ рдХрд┐ pub(path)
рдЕрдм рдХрд╛рдиреВрдиреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, pub(in path)
рдлреЙрд░реНрдо рдХреЛ рдмрджрд▓рдХрд░ рдФрд░ pub(crate)
рдФрд░ pub(super)
рд╢рд╛рдорд┐рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ pub(...)
рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рд░рд▓реАрдХрд░рдг рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ crate
рд╕реЗ рднрд┐рдиреНрди рджрд┐рд╢рд╛ рдореЗрдВ, рдЬрд┐рд╕ рдкрд░ рд╣рдо рд╡рд┐рдЪрд╛рд░ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ ... struct S(pub(path) Type)
рдЕрд╕реНрдкрд╖реНрдЯ рд╣реИ (рдПрд▓рдПрд▓-рдПрд╕реНрдХ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП) struct S(pub (Type,))
рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХреЗ рд╕рд╛рдеред
рдЗрд╕рд▓рд┐рдП рдореИрдВ рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рдорд╣реАрдиреЛрдВ рд╕реЗ рдпрд╣реА рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ "рдХрд░реАрдм" рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЖ рдЧрдпрд╛ рд╣реВрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реА рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╕рд╛рд░рд╛рдВрд╢ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
pub(super)
, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдореБрдЭреЗ рдЕрднреНрдпрд╛рд╕ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдлреА рд╕рд╛рдорд╛рдиреНрдп рд▓рдЧрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд╕реНрддрд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдпрд╛рдиреА, pub(crate::foo)
)ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЕрдХреНрд╕рд░ рдРрд╕реЗ рдореЙрдбреНрдпреВрд▓ рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬрд┐рдирдореЗрдВ рдЙрдк-рдореЙрдбреНрдпреВрд▓ рд╣реЛрдВ, рдФрд░ рдЙрди рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЯреЛрдХрд░рд╛ рджреГрд╢реНрдпрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЧреЛрдкрдиреАрдпрддрд╛ рдХреЗ рдЗрдЪреНрдЫрд┐рдд рд╕реНрддрд░ рдХреЛ рд╕рдВрдкреНрд░реЗрд╖рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИредpub(crate) fn
, рдЬрдмрдХрд┐ рдХреЗрд╡рд▓ crate fn
рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд╛рдлреА рдХрдо рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╣реИ, рдЗрддрдирд╛ рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдкреНрдпрд╛рд░рд╛ рд╣реИ рдХрд┐ pub(crate)
рддрдХ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╣реИ pub(crate::foo)
, рдЬреЛ рдореБрдЭреЗ рдХрднреА-рдХрднреА рдорд┐рд▓рдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИ (рдпрд╛рдиреА, рдПрдХ рдЯреЛрдХрд░рд╛ рдХреЗ рднреАрддрд░ "рдмрдбрд╝рд╛" рдореЙрдбреНрдпреВрд▓), рд▓реЗрдХрд┐рди рдпрд╣ рдЗрддрдирд╛ рдХреНрд░рд┐рдпрд╛рддреНрдордХ рд╣реИ рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╢рд╛рдпрдж рд╣реА рдХрднреА рд╣реЛрдЧрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдХрд╛рдлреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЙрди рдмрдбрд╝реЗ рдореЙрдбреНрдпреВрд▓ рд╡реИрд╕реЗ рднреА рд╕рдмрдХреНрд░реЗрдЯреНрд╕ рдореЗрдВ рдлреИрд▓реЗ рд╣реБрдП рдмреЗрд╣рддрд░ рд╣реЛрдВрдЧреЗ ...pub(x) fn
рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдЙрдкрдпреБрдХреНрдд рдЧреЛрдкрдиреАрдпрддрд╛ рдХреЗ рдереЗред рд╣рдордиреЗ рдЙрди рдирд┐рдпрдореЛрдВ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЕрдм рдЙрди рдЭреБрдВрдЭрд▓рд╛рд╣рдЯреЛрдВ рдХреЛ рдирд╣реАрдВ рдЭреЗрд▓ рд░рд╣рд╛ рд╣реВрдВ - рдФрд░ рдЕрдЧрд░ рдРрд╕реА рдФрд░ рдЭреБрдВрдЭрд▓рд╛рд╣рдЯ рд╕рд╛рдордиреЗ рдЖрддреА рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЙрдиреНрд╣реЗрдВ рднреА рд╕рдВрдмреЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВредpub
рд▓рд┐рдЦрдирд╛ рд╕рдВрднрд╡ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ "рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ", рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИредрдФрд░, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдЕрдм crate fn
рдирд╣реАрдВ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдмрд╛рдж рдореЗрдВ рдирд╣реАрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ "рдЧреЛрдкрдиреАрдпрддрд╛ рдХреЗ рддреАрди рд╕реНрддрд░" рдореЙрдбрд▓ рдмреЗрд╣рддрд░ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреНрд░реЗрдЯ рдХреЗ рднреАрддрд░ "рд╣рд▓реНрдХреЗ, рдЗрдирд▓рд╛рдЗрди рдХреНрд░реЗрдЯ" рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИред рдпрд╛рдиреА, рдЕрдЧрд░ рдЯреЛрдХрд░рд╛ рдХреЗ рднреАрддрд░ рдПрдХ рд╕рдмрдореЙрдбреНрдпреВрд▓ рд╣реЛрдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдореИрдВ рдПрдХ рдирд┐рдЬреА рдЯреЛрдХрд░рд╛ рдШреЛрд╖рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ (рд╕рдмрд╕реЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рд╢рд╛рдпрдж, рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдбреАрдПрдЬреА рдЬреИрд╕рд╛ рд╕рдВрдмрдВрдз)ред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рд▓реНрдХреЗ, рдЗрдирд▓рд╛рдЗрди рдХреНрд░реЗрдЯ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рд╡реЗ pub(super)
рдЬреИрд╕реЗ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓реЛрдВ рдХреЛ рдХрд╡рд░ рдФрд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдХрднреА рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рдП, рддреЛ рдореИрдВ crate fn
рдХреЗ рдЖрд╕рдкрд╛рд╕ рдЪрд░реНрдЪрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрд╛рдлреА рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА/рд╕рд╛рдорд╛рдиреНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдореИрдВ рд╕рдВрдХрд▓рдХ рд╕реЗ crate
рджреГрд╢реНрдпрддрд╛ рд╕реНрддрд░ рдХреЛ рд╣рдЯрд╛рдиреЗ рдФрд░ рдлреАрдЪрд░ рдЧреЗрдЯ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд╣реВрдВред
рдореИрдВ рдмрд╕ рдпрд╣ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдХрдм рд╕реНрдерд┐рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдореИрдВ рд╣реИрд░рд╛рди рдФрд░ рдирд┐рд░рд╛рд╢ рд╣реВрдВ рдХрд┐ рдЗрд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рд╣реИред рдореИрдВ рдЗрд╕реЗ рдЬреЛрдбрд╝реЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд╣реБрдд рд╕рдордп рдмрд╛рдж рд╕реЗ рджрд┐рди-рдкреНрд░рддрд┐рджрд┐рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдКрдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рдХрд┐рд╕реА рднреА рдореБрджреНрджреЗ рд╕реЗ рдореИрдВ рд╢рд╛рдпрдж рд╣реА рдкрд░реЗрд╢рд╛рди рд╣реВрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЕрднреА рднреА crate ::path
рдЬреИрд╕рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рд╣реИ, рдФрд░ рд╢рд╛рдпрдж рдХрднреА рдирд╣реАрдВ рд▓рд┐рдЦреВрдВрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ ::path
рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдХрднреА рдирд╣реАрдВ рдЫреВрддрд╛ред
рд╕реБрдзрд╛рд░ рдХреА рдЧреБрдВрдЬрд╛рдЗрд╢ рд╣реИ, рдЬрд╝рд░реВрд░ред рдХреАрд╡рд░реНрдб рдХреЛ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рдЪреБрдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, pub(super)
рдЕрднреА рднреА рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдФрд░ рдЬрдм рдореИрдВ рд╕рд╣рд╛рдпрдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХреНрд░реЗрдЯ-рд╕реНрддрд░реАрдп рджреГрд╢реНрдпрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рд╕рднреА рдЬрдЧрд╣ рдореГрдд рдХреЛрдб рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдкрд░реЗрд╢рд╛рдиреА рд╣реЛрддреА рд╣реИред рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рдиреЗ рддрдХ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ (рдлреАрдЪрд░-рдЧреЗрдЯреЗрдб) рдХреЗ рдЖрд╕рдкрд╛рд╕ рдЫреЛрдбрд╝ рджреЗрдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ред pub(crate)
рд╕рд┐рдВрдЯреИрдХреНрд╕ рдПрдХ рдЖрдВрдЦреЛрдВ рдХреА рд░реЛрд╢рдиреА рдХрд╛ рдХреБрдЫ рд╣реИ рдФрд░ рдмрдбрд╝реЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЫреЛрдЯреЗ, рдХрдбрд╝реЗ рд▓реЛрдЧреЛрдВ рдореЗрдВ рддреЛрдбрд╝рдиреЗ рд╕реЗ рдереЛрдбрд╝рд╛ рд╣рддреЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реИред
рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ "рдЧреЛрдкрдиреАрдпрддрд╛ рдХреЗ рдорд┐рд╢реНрд░рд┐рдд рд╕реНрддрд░" рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╕рдмрд╕реЗ рдмрдбрд╝реА рдПрд░реНрдЧреЛрдиреЛрдорд┐рдХ рдмрд╛рдзрд╛рдПрдВ рд▓рд┐рдВрдЯреНрд╕ рдФрд░ рд╣рдорд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдЖрдИ рд╣реИрдВ рдЬреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реА рд╣реИрдВ рдХрд┐ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП) рдкрдм (рдПрдХреНрд╕) рдПрдлрдПрди рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдЙрдкрдпреБрдХреНрдд рдЧреЛрдкрдиреАрдпрддрд╛ рдХреЗ рдереЗред
рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо "рдкрд╣реБрдВрдЪ рдпреЛрдЧреНрдп рдкрдм" рд▓рд┐рдВрдЯ ( mod private { pub fn f() {} }
) рдХреЛ рднреА рд╕рдХреНрд╖рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ?
рд╣реЗ, рдореБрдЭреЗ рджреВрд╕рд░реЗ рд╡рд┐рдЪрд╛рд░ рдЖ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рд╡рд┐рднрд┐рдиреНрди рд░рд╕реНрдЯрд╕реА рдХреЛрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрдврд╝рд╛ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧ рдореЗрдВ crate
рджреЗрдЦрддрд╛ рд╣реВрдВ, рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдорд╛рдорд▓реЗ рд╕рднреА pub(crate)
рдереЗ ... рд╢рд╛рдпрдж рдХрд░рдиреЗ рд▓рд╛рдпрдХ рд╣реЛрдВрдЧреЗ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдХреЗрд╡рд▓ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЕрдВрддрд░ рдореБрдЭреЗ рдХреИрд╕рд╛ рдорд╣рд╕реВрд╕ рдХрд░рд╛рддрд╛ рд╣реИред рдореБрдЭреЗ рдпрд╛рдж рд╣реИ рдХрд┐ рдЬрдм рд╣рдордиреЗ рдЗрд╕реЗ рд░рд╛рдд рд╕реЗ рд╕реНрдерд┐рд░ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдерд╛, рддреЛ рдЪрд╛рдХ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рджреБрдЦ рд╣реБрдЖ рдерд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдм рдореБрдЭреЗ рдЗрд╕рдХреА рдЖрджрдд рд╣реЛ рдЧрдИ рд╣реИ, рдЗрд╕рдиреЗ рдореБрдЭреЗ рдЗрддрдирд╛ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред
@matklad рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдирд╣реАрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд▓рд┐рдВрдЯ рднреА рдХрд╛рдлреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рд╕рдЪ рдХрд╣реВрдВ рддреЛ, рдореБрдЭреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдФрд░ рдЭреБрдВрдЭрд▓рд╛рд╣рдЯ рдХрд╛ рд╕рд╛рдордирд╛ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рдЬреИрд╕рд╛ рдХрд┐ рдореБрдЭреЗ рдорд┐рд▓рддрд╛ рдерд╛ред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рд░рд╕реНрдЯ рдХреЛрдб рдирд╣реАрдВ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдБ! рдореБрдЭреЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдпрд╛рдж рд╣реИ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдпреЗ рдХрд╖реНрдЯрдкреНрд░рдж рдЪрдХреНрд░ рд╣реБрдЖ рдХрд░рддреЗ рдереЗ, рдЬрд╣рд╛рдВ рдРрд╕рд╛ рд▓рдЧрддрд╛ рдерд╛ рдХрд┐ рдореИрдВ рд╕рдВрдХрд▓рдХ рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдореИрдВ рдЬрд┐рддрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдЙрд╕рд╕реЗ рдЕрдзрд┐рдХ рдЪреАрдЬреЗрдВ pub
рдмрдирд╛рдХрд░ред
pub(crate)
рд░рдЦрдиреЗ рдФрд░ рдЙрдкрдирд╛рдо рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ pubc
? рдпрд╣ рдХрд╛рдлреА рд╕рдорд╛рди рдкрдврд╝рддрд╛ рд╣реИ, рдХрд┐рд╕реА рднреА рдореМрдЬреВрджрд╛ рдХреЛрдб рдХреЛ рдирд╣реАрдВ рддреЛрдбрд╝рддрд╛ рд╣реИ, рдФрд░ рдХреЛрд╖реНрдардХ рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ (рдЬреЛ рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рддреЗрдЬ рдмрдирд╛рддрд╛ рд╣реИ)ред
рдпрд╣ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдореЗрдВ рджреГрд╢реНрдпрддрд╛ рдХреЗ рд▓рд┐рдП pubs
рдХреА рднреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдореИрдВ рд╕рдВрдХрд▓рдХ рд╕реЗ
crate
рджреГрд╢реНрдпрддрд╛ рд╕реНрддрд░ рдХреЛ рд╣рдЯрд╛рдиреЗ рдФрд░ рдлреАрдЪрд░ рдЧреЗрдЯ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд╣реВрдВред
рдЬрдм рдореИрдВ рдХреЛрдб рдкрдврд╝ рд░рд╣рд╛ рд╣реЛрддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ pub(crate)
рдПрдХ рддрд░рд╣ рдХреА рдЖрдВрдЦреЛрдВ рдХреА рд░реЛрд╢рдиреА рдФрд░ рд╢реЛрд░ рд▓рдЧрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп crate
рджреГрд╢реНрдпрддрд╛ рд╕рдВрд╢реЛрдзрдХ рд╣реЛрдирд╛ рд╡рд╛рдХрдИ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред
рдФрд░, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдЕрдм
crate fn
рдирд╣реАрдВ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдмрд╛рдж рдореЗрдВ рдирд╣реАрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ "рдЧреЛрдкрдиреАрдпрддрд╛ рдХреЗ рддреАрди рд╕реНрддрд░" рдореЙрдбрд▓ рдмреЗрд╣рддрд░ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреНрд░реЗрдЯ рдХреЗ рднреАрддрд░ "рд╣рд▓реНрдХреЗ, рдЗрдирд▓рд╛рдЗрди рдХреНрд░реЗрдЯ" рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИред рдпрд╛рдиреА, рдЕрдЧрд░ рдЯреЛрдХрд░реЗ рдХреЗ рднреАрддрд░ рдПрдХ рд╕рдмрдореЙрдбреНрдпреВрд▓ рд╣реЛрдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдореИрдВ рдПрдХ рдирд┐рдЬреА _crate_ рдШреЛрд╖рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ (рд╕рдмрд╕реЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рд╢рд╛рдпрдж, рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдбреАрдПрдЬреА рдЬреИрд╕рд╛ рд╕рдВрдмрдВрдз)ред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рд▓реНрдХреЗ, рдЗрдирд▓рд╛рдЗрди рдХреНрд░реЗрдЯ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рд╡реЗpub(super)
рдЬреИрд╕реЗ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓реЛрдВ рдХреЛ рдХрд╡рд░ рдФрд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдХрднреА рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рдП, рддреЛ рдореИрдВcrate fn
рдХреЗ рдЖрд╕рдкрд╛рд╕ рдЪрд░реНрдЪрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрд╛рдлреА рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА/рд╕рд╛рдорд╛рдиреНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрди "рд╣рд▓реНрдХреЗ" рдмрдХреНрд╕реЗ рдХреЛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ рдЬрд┐рдирдХрд╛ рдЖрдк рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реИрдВ! рдпрд╣ рддреБрд░рдВрдд рдХрд╛рд░реНрдпрд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЬрд╛рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдХрд┐ рднрд╛рд░реА рд╣реИрдВред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ
pub(crate)
рд▓рд┐рдЦрдиреЗ рдХреЗ рд╕рд╛рде рдареАрдХ рд╣реВрдВ, рдЗрд░рд╛рджрд╛ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд▓рдЧрддрд╛ рд╣реИред@johnthagen рджреНрд╡рд╛рд░рд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдЙрджрд╛рд╣рд░рдг рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджреЗрдЦрдиреЗ рдореЗрдВ рджрд░реНрджрдирд╛рдХ рд╣реИ (
crate
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ):crate mod color;
рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд▓рдЧрддрд╛ рд╣реИ, рдЖрдкрдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕ рдкрд░ рдереЛрдбрд╝рд╛ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╡рд╣рд╛рдВ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред