ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎΡΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π½Π° Rust ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π²Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΎΡ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΈ ΠΏΡΠ΅Π΄ΠΏΠ°Π·Π²Π° ΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ, ΠΏΡΠΎΠΈΠ·ΡΠΈΡΠ°ΡΠΈ ΠΎΡ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π½Π° Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ, ΠΊΠ°ΡΠΎ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΏΠ°ΠΌΠ΅Ρ ΡΠ»Π΅Π΄ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π²Π°Π½Π΅, Π΄Π΅ΡΠ΅ΡΠ΅ΡΠΈΡΠ°Π½Π΅ Π½Π° Π½ΡΠ»Π΅Π² ΡΠΊΠ°Π·Π°ΡΠ΅Π», ΠΏΡΠ΅ΠΏΡΠ»Π²Π°Π½Π΅ Π½Π° Π±ΡΡΠ΅Ρ ΠΈ Π΄ΡΡΠ³ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ. Π Π°Π·ΡΠ°Π±ΠΎΡΠ²Π° ΡΠ΅ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ Π·Π° ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ³Π»ΠΎΠ±ΡΠ²Π°Π½Π΅ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
ΠΡΠ½ΠΎΠ²Π½Π°ΡΠ°
-
ΠΠΎΠ±Π°Π²Π΅Π½ΠΎ ΠΎΡ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΠ°Π±Π»ΠΎΠ½ΠΈ Π·Π° ΡΡΠΏΠΎΡΡΠ°Π²ΡΠ½Π΅ Π½Π° ΡΠ°ΡΡΠΈ ΠΎΡ ΡΡΠ΅Π·ΠΎΠ²Π΅ (Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΈ ΠΌΠ°ΡΠΈΠ²ΠΈ, ΡΡΠ΅Π·ΠΎΠ²Π΅). ΠΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° Π±ΡΡ Π° ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈ ΡΠΎΡΠ½ΠΈ ΡΡΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΡ, Π½ΠΎ ΡΠ΅Π³Π° Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ, ΠΎΡΠ±Π΅Π»ΡΠ·Π°Π½ΠΈ Ρ ".." Π·Π° ΠΏΠΎΠΊΡΠΈΠ²Π°Π½Π΅ Π½Π° ΠΎΡΡΠ°Π½Π°Π»ΠΈΡΠ΅ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ ΠΎΡ ΠΌΠ°ΡΠΈΠ²Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:fn foo(Π΄ΡΠΌΠΈ: &[&str]) {
ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π°ΡΠΈ Π΄ΡΠΌΠΈ {// ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π° Π½Π°ΡΠ°Π»Π½ΠΈΡΠ΅ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ Π½Π° ΠΌΠ°ΡΠΈΠ²Π° ΠΈ ΠΈΠ³Π½ΠΎΡΠΈΡΠ°
ΡΠ»Π΅Π΄Π²Π°ΡΠΈ Π³ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ
["ΠΠ΄ΡΠ°Π²Π΅ΠΉ", "Π‘Π²ΡΡ", "!", ..] => println!("ΠΠ΄ΡΠ°Π²Π΅ΠΉ ΡΠ²ΡΡ!"),// ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π° ΠΏΡΡΠ²ΠΈΡΠ΅ Π΄Π²Π° Π΅Π»Π΅ΠΌΠ΅Π½ΡΠ° "Foo" ΠΈ "Bar", Π° ΠΎΡΡΠ°Π½Π°Π»ΠΈΡΠ΅ Π½Π΅ ΡΠ° Π²Π°ΠΆΠ½ΠΈ
["Foo", "Bar", ..] => println!("Baz"),// ΠΈΠ³Π½ΠΎΡΠΈΡΠ° Π²ΡΠΈΡΠΊΠΎ, Π½ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡΡ Π΅Π»Π΅ΠΌΠ΅Π½Ρ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ "!".
[.., β!β] => println!(β!!!β),// Π² Π½Π°ΡΠ°Π»Π½ΠΈΡ ΡΡΠ΅Π· Π²ΠΊΠ»ΡΡΠ²Π°ΠΌΠ΅ Π²ΡΠΈΡΠΊΠΎ Ρ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ Π΅Π»Π΅ΠΌΠ΅Π½Ρ, ΠΊΠΎΠΉΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ βzβ
[start @ .., "z"] => println!("Π·Π°ΠΏΠΎΡΠ²Π° Ρ: {:?}", Π½Π°ΡΠ°Π»ΠΎ),// Π² ΠΊΡΠ°ΠΉΠ½ΠΈΡ ΡΡΠ΅Π· ΠΏΠΎΡΡΠ°Π²ΡΠΌΠ΅ Π²ΡΠΈΡΠΊΠΎ Ρ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΡΠ²ΠΈΡ Π΅Π»Π΅ΠΌΠ΅Π½Ρ, ΠΊΠΎΠΉΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π΅ βaβ.
["a", ΠΊΡΠ°ΠΉ @ ..] => println!("Π·Π°Π²ΡΡΡΠ²Π° Ρ: {:?}", ΠΊΡΠ°ΠΉ),ΠΏΠΎΡΠΈΠ²ΠΊΠ° => println!("{:?}", ΠΏΠΎΡΠΈΠ²ΠΊΠ°),
}
} - ΠΠΎΠ±Π°Π²Π΅Π½ Π΅ Π½ΠΎΠ² ΠΌΠ°ΠΊΡΠΎΡ βΡΡΠ²ΠΏΠ°Π΄Π°!β, ΠΊΠΎΠΉΡΠΎ ΠΏΡΠΈΠ΅ΠΌΠ° ΠΈΠ·ΡΠ°Π· ΠΈ ΡΠ°Π±Π»ΠΎΠ½ ΠΊΠ°ΡΠΎ Π²Ρ
ΠΎΠ΄ ΠΈ Π²ΡΡΡΠ° βtrueβ, Π°ΠΊΠΎ ΡΠ°Π±Π»ΠΎΠ½ΡΡ ΡΡΠ²ΠΏΠ°Π΄Π° Ρ ΠΈΠ·ΡΠ°Π·Π°. Π¨Π°Π±Π»ΠΎΠ½ΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ β|β. ΠΈ Π°ΠΊΠΎ".
match self.partial_cmp(other) {
ΠΡΠΊΠΎΠΈ (ΠΠΎ-ΠΌΠ°Π»ΠΊΠΎ) => Π²ΡΡΠ½ΠΎ,
_ => Π½Π΅Π²ΡΡΠ½ΠΎ,
}ΡΡΠ²ΠΏΠ°Π΄Π°!(self.partial_cmp(other), Some(Less))
Π½Π΅ΠΊΠ° foo = 'f';
assert!(matches!(foo, 'A'..='Z' | 'a'..='z'));let bar = Some(4);
assert!(ΡΡΠ²ΠΏΠ°Π΄Π°!(bar, Some(x) if x > 2)); - Π ΠΏΠ°Π½ΠΈΠΊ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡΡΠ° ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ ΠΏΡΠΈ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅
ΡΠΈΠΏΠΎΠ²Π΅ Option ΠΈ Result, ΡΠ΅Π³Π° ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ Π½ΠΎΠΌΠ΅ΡΠ° Π½Π° ΡΠ΅Π΄ΠΎΠ²Π΅ Ρ Π²ΡΡΠ·ΠΊΠ° ΠΊΡΠΌ ΠΊΠΎΠ΄Π°, ΠΊΠΎΠΉΡΠΎ Π΅ Π½Π°ΠΏΡΠ°Π²ΠΈΠ» ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½ΠΎΡΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅, Π²ΠΌΠ΅ΡΡΠΎ Π²ΡΡΠ·ΠΊΠΈ ΠΊΡΠΌ ΠΊΠΎΠ΄Π°, ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ Π² libcore. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΠΌΡΠ½Π°ΡΠ° Π·Π°ΡΡΠ³Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡΡΠ° Π·Π° ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅ ΠΈ ΠΎΡΠ°ΠΊΠ²Π°Π½Π΅ Π½Π°Π΄ Option::None ΠΈΠ»ΠΈ ΡΠ΅ ΡΡΠΈΠ²Π° ΠΏΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° unwrap_err,expect,expect_err ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π·Π° ΡΠΈΠΏΠ° ΡΠ΅Π·ΡΠ»ΡΠ°Ρ. - ΠΠ΅Π½ΠΈΠ΄ΠΆΡΡΡΡ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ Cargo ΠΎΡΠΈΠ³ΡΡΡΠ²Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π·Π°ΠΌΠ΅ΡΡΠ²Π°Π½Π΅ Π½Π° βproc_macro crateβ Π² Π±Π»ΠΎΠΊΠ° βexternβ Π·Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ½ΠΈ ΠΌΠ°ΠΊΡΠΎΡΠΈ. Π’Π°Π·ΠΈ ΠΏΡΠΎΠΌΡΠ½Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°ΡΠ° "use" Π΄Π° ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π° ΠΊΡΠΌ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ½ΠΈ ΠΌΠ°ΠΊΡΠΎΡΠΈ, Π±Π΅Π· Π΄Π° ΡΠ΅ Π½Π°Π»Π°Π³Π° Π΄Π° ΡΠ΅ ΡΠΊΠ°Π·Π²Π° "extern crate proc_macro;" Π² ΠΊΠΎΠ΄Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π°ΠΊΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ΅Π΄Π° βuse proc_macro::TokenStream;β, ΡΠΎΠ³Π°Π²Π° ΠΊΠΎΠ΄ΡΡ Π²Π΅ΡΠ΅ ΡΠ΅ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ, Π°ΠΊΠΎ βextern crate proc_macro;β Π±ΡΠ΄Π΅ ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π°Ρ ΠΎΡ Π½Π΅Π³ΠΎ.
- Π Π°Π·ΡΠΈΡΠ΅Π½ΠΈ ΡΠ° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°. Π iter::Empty
Π΄ΠΎΠ±Π°Π²ΠΈ ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ ΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π·Π° Π²ΡΡΠΊΠ°ΠΊΠ²ΠΈ T ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ.
Pin Π·Π° ΠΎΠ±Π°ΠΆΠ΄Π°Π½ΠΈΡ::{map_unchecked, map_unchecked_mut}Π΄ΠΎΡΡΠ°Π²Π΅Π½ΠΈ ΠΎΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΠ° ΠΎΡ Π²ΡΡΡΠ°Π½Π΅ Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡ Π½Π° ΡΠΈΠΏ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ "Sized".
Π io::CursorΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈ PartialEq ΠΈ Eq. ΠΡΡΠΈΠ±ΡΡΡΡ βconstβ ΠΎΠΏΡΠ΅Π΄Π΅Π»Ρ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π²ΡΠ² Π²ΡΠ΅ΠΊΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π²ΠΌΠ΅ΡΡΠΎ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΈ,ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΎ Π·Π° ΠΌΠ΅ΡΠΎΠ΄Π° Layout::new. - ΠΠΎΠ²Π° ΡΠ°ΡΡ ΠΎΡ API Π΅ ΠΏΡΠ΅Ρ
Π²ΡΡΠ»Π΅Π½Π° Π² ΡΡΠ°Π±ΠΈΠ»Π½Π°ΡΠ° ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Π½ΠΈΡΠ΅ CondVar::wait_while, CondVar::wait_timeout_while,
DebugMap::ΠΊΠ»ΡΡ, DebugMap::ΡΡΠΎΠΉΠ½ΠΎΡΡ,
ManuallyDrop::take,
ptr::slice_from_raw_parts_mut ΠΈ ptr::slice_from_raw_parts. - ΠΠ΅ΡΠΎΠ΄ΡΡ Error::description Π΅ ΠΎΡΡ Π²ΡΡΠ»Π΅Π½.
- ΠΡΠΈΠ³ΡΡΠ΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° ΠΎΡ Π²ΡΠΎΡΠΎ Π½ΠΈΠ²ΠΎ Π·Π° armv7a-none-eabi ΠΈ riscv64gc-unknown-linux-gnu ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ. ΠΡΠΈΠ³ΡΡΠ΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π·Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° riscv64gc-unknown-linux-gnu.
32-Π±ΠΈΡΠΎΠ²ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ Π½Π° AppleΠΏΠΎΠ½ΠΈΠΆΠ΅Π½ Π² Π΄Π»ΡΠΆΠ½ΠΎΡΡ Π΄ΠΎ ΡΡΠ΅ΡΠΎ Π½ΠΈΠ²ΠΎ Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°, ΠΊΠΎΠ΅ΡΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π° Π±Π°Π·ΠΎΠ²Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°, Π½ΠΎ Π±Π΅Π· Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Π½ΠΎ ΡΠ΅ΡΡΠ²Π°Π½Π΅ ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅ Π½Π° ΠΎΡΠΈΡΠΈΠ°Π»Π½ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΠΈ. ΠΠΎΠ½ΠΈΠΆΠ°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° ΡΠ΅ Π΄ΡΠ»ΠΆΠΈ Π½Π° ΡΠΎΠ²Π°, ΡΠ΅ Apple Π²Π΅ΡΠ΅ Π½Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° 32-Π±ΠΈΡΠΎΠ²ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru