Ulawulo lwenkumbulo oluzenzekelayo lwe-Rust lukhulula umphuhlisi ekusetyenzisweni kwesalathisi kwaye ikhusela kwiingxaki ezivela kulawulo lwenkumbulo olukwinqanaba elisezantsi, elifana nofikelelo lwememori yasemva kwe-free, izalathisi ezingenanto, ukugqithiswa kwe-buffer, nokunye okunjalo. Umphathi wephakheji uyaphuhliswa ukuze asasaze amathala eencwadi, aqinisekise ukudibanisa kunye nokulawula ukuxhomekeka kwiprojekthi.
Siseko
-
Yongeziwe ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² Π΄Π»Ρ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ°ΡΡΠ΅ΠΉ ΡΡΠ΅Π·ΠΎΠ² (Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ², slice). ΠΡΠ»ΠΈ ΡΠ°Π½ΡΡΠ΅ Π΄ΠΎΠΏΡΡΠΊΠ°Π»ΠΈΡΡ ΡΠΎΡΠ½ΡΠ΅ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ, ΡΠΎ ΡΠ΅ΠΏΠ΅ΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ Ρ ΠΌΠ΅ΡΠΊΠΎΠΉ Β«..Β» Π΄Π»Ρ ΠΎΡ Π²Π°ΡΠ° ΠΎΡΡΠ°ΡΡΠΈΡ ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:fn foo(words: &[&str]) {
match words {// ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ Π½Π°ΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° Ρ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ
ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π·Π° Π½ΠΈΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²
[Β«HelloΒ», Β«WorldΒ», Β«!Β», ..] => println!(Β«Hello World!Β»),// ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΠΏΠ΅ΡΠ²ΡΠ΅ Π΄Π²Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Β«FooΒ» ΠΈ Β«BarΒ», Π° ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠ΅ Π½Π΅ Π²Π°ΠΆΠ½ΠΎ
[Β«FooΒ», Β«BarΒ», ..] => println!(Β«BazΒ»),// ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΠΌ Π²ΡΡ, Π½ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Β«!Β».
[.., Β«!Β»] => println!(Β«!!!Β»),// Π² ΡΡΠ΅Π· start Π²ΠΊΠ»ΡΡΠ°Π΅ΠΌ Π²ΡΡ, ΠΊΡΠΎΠΌΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Β«zΒ»
[start @ .., Β«zΒ»] => println!(Β«starts with: {:?}Β», start),// Π² ΡΡΠ΅Π· end ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΠΌ Π²ΡΡ, ΠΊΡΠΎΠΌΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Β«aΒ».
[Β«aΒ», end @ ..] => println!(Β«ends with: {:?}Β», end),rest => println!(Β«{:?}Β», rest),
}
} - ΠΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²ΡΠΉ ΠΌΠ°ΠΊΡΠΎΡ Β«matches!Β», ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π½Π° Π²Ρ
ΠΎΠ΄Π΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΡΠ°Π±Π»ΠΎΠ½, Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Β«trueΒ», Π΅ΡΠ»ΠΈ ΡΠ°Π±Π»ΠΎΠ½ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ. Π ΡΠ°Π±Π»ΠΎΠ½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Β«|Β» ΠΈ Β«ifΒ».
match self.partial_cmp(other) {
Some(Less) => true,
_ => bubuxoki,
}matches!(self.partial_cmp(other), Some(Less))
let foo = βfβ;
assert!(matches!(foo, βAβ..=βZβ | βaβ..=βzβ));let bar = Some(4);
assert!(matches!(bar, Some(x) if x > 2)); - Π panic-ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΡ
, Π²ΡΠ²ΠΎΠ΄ΠΈΠΌΡΡ
ΠΏΡΠΈ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ
ΡΠΈΠΏΠΎΠ² Option ΠΈ Result, ΡΠ΅ΠΏΠ΅ΡΡ ΠΎΡΡΠ°ΠΆΠ°ΡΡΡΡ Π½ΠΎΠΌΠ΅ΡΠ° ΡΡΡΠΎΠΊ ΡΠΎ ΡΡΡΠ»ΠΊΠΎΠΉ Π½Π° ΠΊΠΎΠ΄, ΠΎΡΡΡΠ΅ΡΡΠ²ΠΈΠ²ΡΠΈΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½ΡΠΉ Π²ΡΠ·ΠΎΠ², Π° Π½Π΅ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΊΠΎΠ΄ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π²ΡΠ·ΠΎΠ²Π° Π² libcore. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°Π΅Ρ Π²ΡΠ·ΠΎΠ² unwrap ΠΈ expect Π½Π°Π΄ Option::None ΠΈΠ»ΠΈ ΡΠ±ΠΎΠΈ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ unwrap_err, expect, expect_err ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π΄Π»Ρ ΡΠΈΠΏΠ° Result. - Π ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΎΠΌ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ΅ Cargo ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Β«proc_macro crateΒ» Π² Π±Π»ΠΎΠΊ Β«externΒ» Π΄Π»Ρ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ½ΡΠΌΠΈ ΠΌΠ°ΠΊΡΠΎΡΠ°ΠΌΠΈ. ΠΠ°Π½Π½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ Β«useΒ» ΠΊ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ½ΡΠΌ ΠΌΠ°ΠΊΡΠΎΡΠ°ΠΌ Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΠΊΠ°Π·Π°Π½ΠΈΡ Π² ΠΊΠΎΠ΄Π΅ Β«extern crate proc_macro;Β». ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΡΠΎΠΊΠ° Β«use proc_macro::TokenStream;Β», ΡΠΎ ΠΊΠΎΠ΄ ΡΠ΅ΠΏΠ΅ΡΡ ΠΎΡΡΠ°Π½Π΅ΡΡΡ ΡΠ°Π±ΠΎΡΠΈΠΌ, Π΅ΡΠ»ΠΈ ΠΈΠ· Π½Π΅Π³ΠΎ ΡΠ΄Π°Π»ΠΈΡΡ Β«extern crate proc_macro;Β».
- Π Π°ΡΡΠΈΡΠ΅Π½Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. Π iter::Empty<T>
yongezwe ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Send ΠΈ Sync Π΄Π»Ρ Π»ΡΠ±ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ T.
ΠΡΠ·ΠΎΠ²Ρ Pin::{map_unchecked, map_unchecked_mut}zisiwe ΠΎΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Β«SizedΒ».
Π io::Cursoriphunyeziwe PartialEq ΠΈ Eq. ΠΡΠΈΠ·Π½Π°ΠΊ Β«constΒ», ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² Π»ΡΠ±ΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ Π²ΠΌΠ΅ΡΡΠΎ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ,ΠΏΡΠΈΠΌΠ΅Π½ΡΠ½ Π΄Π»Ρ ΠΌΠ΅ΡΠΎΠ΄Π° Layout::new. - Π ΡΠ°Π·ΡΡΠ΄ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΡ
ΠΏΠ΅ΡΠ΅Π²Π΅Π΄Π΅Π½Π° Π½ΠΎΠ²Π°Ρ ΠΏΠΎΡΡΠΈΡ API, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ CondVar::wait_while, CondVar::wait_timeout_while,
DebugMap::key, DebugMap::value,
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-ΡΠ°Π·ΡΡΠ΄Π½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌ.
umthombo: opennet.ru