ΠΠ±ΡΠ°Π²ΡΠ΅Π½ ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΡΠΊΠΈ ΡΠ΅Π·ΠΈΠΊ Rust 1.96, ΠΊΠΎΡΠΈ ΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π°ΠΎ ΠΏΡΠΎΡΠ΅ΠΊΠ°Ρ Mozilla, Π°Π»ΠΈ ΡΠ΅ ΡΠ°Π΄Π° ΡΠ°Π·Π²ΠΈΡΠ΅Π½ ΠΏΠΎΠ΄ ΠΏΠΎΠΊΡΠΎΠ²ΠΈΡΠ΅ΡΡΡΠ²ΠΎΠΌ Π½Π΅Π·Π°Π²ΠΈΡΠ½Π΅ Π½Π΅ΠΏΡΠΎΡΠΈΡΠ½Π΅ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΠ΅ Rust Foundation. ΠΠ΅Π·ΠΈΠΊ ΡΠ΅ ΡΠΎΠΊΡΡΠΈΡΠ° Π½Π° Π±Π΅Π·Π±Π΅Π΄Π½ΠΎΡΡ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ΅ ΠΈ ΠΏΡΡΠΆΠ° Π°Π»Π°ΡΠ΅ Π·Π° ΠΏΠΎΡΡΠΈΠ·Π°ΡΠ΅ Π²ΠΈΡΠΎΠΊΠΎΠ³ ΠΏΠ°ΡΠ°Π»Π΅Π»ΠΈΠ·ΠΌΠ° ΠΈΠ·Π²ΡΡΠ°Π²Π°ΡΠ° Π·Π°Π΄Π°ΡΠ°ΠΊΠ°, Π° Π΄Π° ΠΏΡΠΈΡΠΎΠΌ Π½Π΅ ΠΊΠΎΡΠΈΡΡΠΈ ΡΠ°ΠΊΡΠΏΡΠ°Ρ ΡΠΌΠ΅ΡΠ° ΠΈ runtime (runtime ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½Ρ ΠΈΠ½ΠΈΡΠΈΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡΡ ΠΈ ΠΎΠ΄ΡΠΆΠ°Π²Π°ΡΠ΅ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅).
Π ΡΡΡΠΎΠ²Π΅ ΠΌΠ΅ΡΠΎΠ΄Π΅ ΡΠΏΡΠ°Π²ΡΠ°ΡΠ° ΠΌΠ΅ΠΌΠΎΡΠΈΡΠΎΠΌ ΡΡ Π΄ΠΈΠ·Π°ΡΠ½ΠΈΡΠ°Π½Π΅ Π΄Π° Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡΡ Π³ΡΠ΅ΡΠΊΠ΅ Ρ ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΈΡΠΈ ΠΏΠΎΠΊΠ°Π·ΠΈΠ²Π°ΡΠΈΠΌΠ° ΠΈ Π·Π°ΡΡΠΈΡΠ΅ ΠΎΠ΄ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΊΠΎΡΠΈ Π½Π°ΡΡΠ°ΡΡ ΡΡΠ»Π΅Π΄ ΡΠΏΡΠ°Π²ΡΠ°ΡΠ° ΠΌΠ΅ΠΌΠΎΡΠΈΡΠΎΠΌ Π½ΠΈΡΠΊΠΎΠ³ Π½ΠΈΠ²ΠΎΠ°, ΠΊΠ°ΠΎ ΡΡΠΎ ΡΡ ΠΏΡΠΈΡΡΡΠΏ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠΈ Π½Π°ΠΊΠΎΠ½ ΡΡΠΎ ΡΠ΅ ΠΎΡΠ»ΠΎΠ±ΠΎΡΠ΅Π½Π°, Π΄Π΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈΡΠ°ΡΠ΅ Π½ΡΠ»ΡΠΈΡ ΠΏΠΎΠΊΠ°Π·ΠΈΠ²Π°ΡΠ°, ΠΏΡΠ΅ΠΊΠΎΡΠ°ΡΠ΅ΡΠ΅ Π±Π°ΡΠ΅ΡΠ° ΠΈ ΡΠ°ΠΊΠΎ Π΄Π°ΡΠ΅. ΠΡΠΎΡΠ΅ΠΊΠ°Ρ ΡΠ°Π·Π²ΠΈΡΠ° ΠΌΠ΅Π½Π°ΡΠ΅Ρ ΠΏΠ°ΠΊΠ΅ΡΠ° Cargo Π·Π° Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΠΎΠ»Π°ΠΊΡΠ°Π²Π°ΡΠ΅ ΠΈΠ·Π³ΡΠ°Π΄ΡΠ΅ ΠΈ ΡΠΏΡΠ°Π²ΡΠ°ΡΠ΅ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈΠΌΠ°. Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΡΠΌ crates.io ΡΠ΅ ΠΎΠ΄ΡΠΆΠ°Π²Π° Π·Π° Ρ ΠΎΡΡΠΎΠ²Π°ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°.
ΠΠ΅Π·Π±Π΅Π΄Π½ΠΎΡΡ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ΅ ΡΠ΅ ΠΎΠ±Π΅Π·Π±Π΅ΡΠ΅Π½Π° Ρ Π ΡΡΡΡ Ρ Π²ΡΠ΅ΠΌΠ΅ ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ°ΡΠ° ΠΊΡΠΎΠ· ΠΏΡΠΎΠ²Π΅ΡΡ ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈ, ΠΏΡΠ°ΡΠ΅ΡΠ΅ Π²Π»Π°ΡΠ½ΠΈΡΡΠ²Π° Π½Π°Π΄ ΠΎΠ±ΡΠ΅ΠΊΡΠΈΠΌΠ°, ΠΏΡΠ°ΡΠ΅ΡΠ΅ ΠΆΠΈΠ²ΠΎΡΠ½ΠΎΠ³ Π²Π΅ΠΊΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠ° (ΠΎΠΏΡΠ΅Π³Π°) ΠΈ ΠΏΡΠΎΡΠ΅Π½Ρ ΠΈΡΠΏΡΠ°Π²Π½ΠΎΡΡΠΈ ΠΏΡΠΈΡΡΡΠΏΠ° ΠΌΠ΅ΠΌΠΎΡΠΈΡΠΈ ΡΠΎΠΊΠΎΠΌ ΠΈΠ·Π²ΡΡΠ°Π²Π°ΡΠ° ΠΊΠΎΠ΄Π°. Π ΡΡΡ ΡΠ°ΠΊΠΎΡΠ΅ ΠΏΡΡΠΆΠ° Π·Π°ΡΡΠΈΡΡ ΠΎΠ΄ ΠΏΡΠ΅ΠΊΠΎΡΠ°ΡΠ΅ΡΠ° ΡΠ΅Π»ΠΎΠ³ Π±ΡΠΎΡΠ°, Π·Π°Ρ ΡΠ΅Π²Π° ΠΎΠ±Π°Π²Π΅Π·Π½Ρ ΠΈΠ½ΠΈΡΠΈΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡΡ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²ΠΈΡ ΠΏΡΠ΅ ΡΠΏΠΎΡΡΠ΅Π±Π΅, Π±ΠΎΡΠ΅ ΠΎΠ±ΡΠ°ΡΡΡΠ΅ Π³ΡΠ΅ΡΠΊΠ΅ Ρ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠΈ, ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΡΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΏΡ Π½Π΅ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²ΠΈΡ ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈ ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²ΠΈΡ , Π½ΡΠ΄ΠΈ ΡΠ½Π°ΠΆΠ½ΠΎ ΡΡΠ°ΡΠΈΡΠΊΠΎ ΠΊΡΡΠ°ΡΠ΅ ΠΊΠ°ΠΊΠΎ Π±ΠΈ ΡΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠ°Π»Π΅ Π»ΠΎΠ³ΠΈΡΠΊΠ΅ Π³ΡΠ΅ΡΠΊΠ΅.
ΠΠ»Π°Π²Π½Π΅ ΠΈΠ½ΠΎΠ²Π°ΡΠΈΡΠ΅:
- ΠΠΎΠ±Π°Π²Π»Π΅Π½ ΠΌΠΎΠ΄ΡΠ»Ρ range Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π½ΠΎΠ²ΡΡ
ΡΠΈΠΏΠΎΠ², ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΠΌΡΡ
Π΄Π»Ρ Π·Π°ΠΌΠ΅Π½Ρ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΡ
ΡΠΈΠΏΠΎΠ² Range, RangeInclusive, RangeToInclusive ΠΈ RangeFrom, ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΡ
Ρ
ΡΠ°Π½ΠΈΡΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ Π² Copy-ΡΡΡΡΠΊΡΡΡΠ°Ρ
. Π’ΠΈΠΏ Range ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ, ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ (Π½ΠΎ Π½Π΅ Π²Ρ
ΠΎΠ΄ΡΡΠΈΠΌ Π² Π½Π΅Π³ΠΎ), ΡΠΈΠΏ RangeFrom ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΈΡΠ»Π° Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π° ΡΠΈΠΏ RangeInclusive β Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° Ρ ΠΎΠ±Π΅ΠΈΠΌΠΈ Π΅Π³ΠΎ Π³ΡΠ°Π½ΠΈΡΠ°ΠΌΠΈ. Π Π±ΡΠ΄ΡΡΠΈΡ
Π²ΡΠΏΡΡΠΊΠ°Ρ
Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΡΠ²ΡΡΡΡ ΡΠΈΠΏΡ RangeFull ΠΈ RangeTo, ΡΡΠ°ΡΠ°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΠ΅Π½Π° Π² core::range::legacy::*, Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Β«N..MΒ» ΠΏΠ΅ΡΠ΅Π²Π΅Π΄ΡΡ Π½Π° Π½ΠΎΠ²ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΡΠΈΠΏΠΎΠ².
ΠΠΎΠ²ΡΠ΅ ΡΠΈΠΏΡ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΡΠ΅ΠΌ, ΡΡΠΎ Π²ΠΌΠ΅ΡΡΠΎ ΡΠΈΠΏΠ°ΠΆΠ° Iterator ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡ ΡΠΈΠΏΠ°ΠΆ IntoIterator, Ρ.Π΅. Π²ΠΌΠ΅ΡΡΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΠΎ, ΠΊΠ°ΠΊ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΡΠΈΠΏ Π² ΠΈΡΠ΅ΡΠ°ΡΠΎΡ. ΠΠΎΠ΄ΠΎΠ±Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Ρ Π½ΠΎΠ²ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ (ΡΠΈΠΏΠ°ΠΆ Copy, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΉ, ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΈΠΏΠ° ΠΌΠΎΠΆΠ½ΠΎ Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΡΠ΅Π· ΠΏΡΠΎΡΡΠΎΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅), ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ°Π½Π΅Π΅ Π±ΡΠ»Π° Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Π° ΠΈΠ·-Π·Π° Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ Ρ ΡΠΈΠΏΠ°ΠΌΠΈ ΡΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΌΠΈ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠ°ΠΌΠΈ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½ΠΎΠ²ΡΠ΅ ΡΠΈΠΏΡ Π΄Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π³ΡΠ°Π½ΠΈΡΡ ΡΡΠ΅Π·Π° Π² ΡΡΡΡΠΊΡΡΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΊΠΎΠΏΠΈΡΡΠ΅ΡΡΡ Π±Π΅Π· ΡΠ°Π·Π΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ:use core::range::Range;
#[derive(Clone, Copy)]
pub struct Span(Range<usize>);impl Span {
pub fn of(self, s: &str) -> &str {
&s[self.0]
}
} - ΠΠΎΠ±Π°Π²Π»Π΅Π½Ρ ΠΌΠ°ΠΊΡΠΎΡΡ Β«assert_matches!Β» ΠΈ Β«debug_assert_matches!Β», ΠΏΡΠΎΠ²Π΅ΡΡΡΡΠΈΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡ ΡΠ°Π±Π»ΠΎΠ½Ρ ΠΈ Π°Π²Π°ΡΠΈΠΉΠ½ΠΎ Π·Π°Π²Π΅ΡΡΠ°ΡΡΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΡΠ°ΡΡ
ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ. ΠΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Β«assert!(matches!(..))Β» ΠΈ Β«debug_assert!(matches!(..))Β» Π½ΠΎΠ²ΡΠ΅ ΠΌΠ°ΠΊΡΠΎΡΡ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ Π²ΡΠ²ΠΎΠ΄ΠΎΠΌ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ, Π²ΡΠ·Π²Π°Π²ΡΠΈΠΌΠΈ ΡΠ±ΠΎΠΉ. ΠΠ»Ρ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΠΉ ΡΠΎ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΌΠΈ ΠΌΠ°ΠΊΡΠΎΡΠ°ΠΌΠΈ, ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΌΠΈ Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ, Π½ΠΎΠ²ΡΠ΅ ΠΌΠ°ΠΊΡΠΎΡΡ ΡΡΠ΅Π±ΡΡ ΡΠ²Π½ΠΎΠ³ΠΎ ΠΈΠΌΠΏΠΎΡΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Β«core::assert_matchesΒ».
use core::assert_matches;
fn get_random_number() -> u32 {
4
}ΡΠ½ ΠΌΠ°ΠΈΠ½() {
assert_matches!(get_random_number(), 1..=6);
} - ΠΡΠΈ ΡΠ±ΠΎΡΠΊΠ΅ Π΄Π»Ρ ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ WebAssembly ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½Π° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ° ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΡΠΈΠΊΡ ΠΎΠΏΡΠΈΠΈ Β«βallow-undefinedΒ», ΡΠ°Π·ΡΠ΅ΡΠ°Π²ΡΠ΅ΠΉ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°Π»ΠΈΡΡ Π² ΠΈΠΌΠΏΠΎΡΡ ΠΈΠ· ΠΌΠΎΠ΄ΡΠ»Ρ Β«envΒ». ΠΡΠΈ ΡΠ±ΠΎΡΠΊΠ΅ Π΄Π»Ρ WebAssembly Π²ΡΠ΅ ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΎΠΉ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ. ΠΠ»Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΡΡΠ°ΡΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ Β«RUSTFLAGS=-Clink-arg=βallow-undefinedΒ» ΠΈΠ»ΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ β#[link(wasm_import_module = Β«envΒ»)]Β» Π² ΠΊΠΎΠ΄Π΅.
- ΠΠΎΠ²ΠΈ Π΄Π΅ΠΎ ΠΠΠ-ΡΠ° ΡΠ΅ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ΅Π½ Ρ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΡ ΡΡΠ°Π±ΠΈΠ»Π½ΠΈΡ
, ΡΠΊΡΡΡΡΡΡΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Π΅ ΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ΅ ΠΎΡΠΎΠ±ΠΈΠ½Π° ΠΊΠΎΡΠ΅ ΡΡ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΎΠ²Π°Π½Π΅:
- assert_matches!
- debug_assert_matches!
- From<T> for AssertUnwindSafe<T>
- From<T> for LazyCell<T, F>
- From<T> for LazyLock<T, F>
- core::range::RangeToInclusive
- core::range::RangeToInclusiveIter
- core::range::RangeFrom
- core::range::RangeFromIter
- core::range::Range
- core::range::RangeIter
- Π ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΎΠΌ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ΅ Cargo ΡΡΡΡΠ°Π½Π΅Π½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡ CVE-2026-5223, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π΄ΡΡΠ³ΠΎΠ³ΠΎ crate-ΠΏΠ°ΠΊΠ΅ΡΠ° Π² Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌ ΠΊΡΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΈΠ· ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΡΠ΅ΡΠ΅Π· ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΈ Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΡΡΡΠ»ΠΊΠ°ΠΌΠΈ Π²Π½ΡΡΡΠΈ crate-Π° ΠΏΠ°ΠΊΠ΅ΡΠΎΠ². Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΡ ΠΏΡΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ ΡΠΎ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΌΠΈ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΠΌΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΈ Π½Π΅ Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°Π΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ crates.io, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π² crates.io Π·Π°ΠΏΡΠ΅ΡΠ΅Π½Π° Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΡΡΡΠ»ΠΊΠ°ΠΌΠΈ.
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ (PDF) ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΡΠΈΠ³ΠΎΠ΄Π½ΠΎΡΡΠΈ ΡΠ·ΡΠΊΠ° Rust Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΎΡΠΈΠ²ΠΎΠΊ Π΄Π»Ρ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠ² ΠΈ Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΡ
ΡΠΈΡΡΠ΅ΠΌ Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠΌΠΈ ΡΠ΅ΡΡΡΡΠ°ΠΌΠΈ.
ΠΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΎ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ STMicroelectronics ΠΏΡΠΈ ΡΡΠ°ΡΡΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
Π΅Π²ΡΠΎΠΏΠ΅ΠΉΡΠΊΠΈΡ
ΡΠ½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅ΡΠΎΠ². ΠΠ²ΡΠΌ ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π±ΡΠ»Π° ΠΏΠΎΡΡΠ°Π²Π»Π΅Π½Π° Π·Π°Π΄Π°ΡΠ° ΠΏΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΎΠΉ ΠΆΠ΅ ΠΏΡΠΎΡΠΈΠ²ΠΊΠΈ Π΄Π»Ρ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠ² STM32U585AI Ρ ΡΠ΄ΡΠΎΠΌ Arm Cortex-M33. ΠΠ΅ΡΠ²Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠΎΠ·Π΄Π°Π²Π°Π»Π° ΠΏΡΠΎΡΠΈΠ²ΠΊΡ Π½Π° Π‘ΠΈ, Π° Π²ΡΠΎΡΠ°Ρ Π½Π° Rust.
Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Π½Π΅ Π²ΡΡΠ²ΠΈΠ»ΠΎ Π·Π°ΠΌΠ΅ΡΠ½ΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ² Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ·ΡΠΊΠ° Π‘ΠΈ Π²ΠΌΠ΅ΡΡΠΎ Rust ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΏΡΠΎΡΠΈΠ²ΠΎΠΊ Π΄Π»Ρ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠ² ΠΏΡΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ Π½Π° Rust ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ runtime ΠΎΡ ΠΎΡΠΊΡΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° Ariel OS ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ Π΄ΠΎΠ±ΠΈΡΡΡΡ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Π½Π° Rust Π½ΠΈΠΆΠ΅, ΡΠ΅ΠΌ Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΡΠ·ΡΠΊΠ΅ Π‘ΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅ΠΉ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΠΉ ΡΡΠ΅ΠΊ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΎΡΠΈΠ²ΠΎΠΊ Π½Π° Π±Π°Π·Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ newlib.
Π Π°Π·ΠΌΠ΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅ΠΉ ΠΏΡΠΎΡΠΈΠ²ΠΊΠΈ ΡΠΎΡΡΠ°Π²ΠΈΠ» 84100 Π±Π°ΠΉΡ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Π½Π° Rust ΠΈ 76744 Π±Π°ΠΉΡΠ° Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Π½Π° Π‘ΠΈ (Π½Π° 10% ΠΌΠ΅Π½ΡΡΠ΅), Π½ΠΎ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ Π² ΠΏΡΠΎΡΠΈΠ²ΠΊΠ΅ Π½Π° Rust ΠΎΠΊΠ°Π·Π°Π»ΠΎΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½ΠΈΠΆΠ΅ β 24640 Π±Π°ΠΉΡΠΎΠ² ΠΏΡΠΎΡΠΈΠ² 42608 Π±Π°ΠΉΡΠΎΠ². Π§ΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΡΠΎ ΠΏΡΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π½Π°ΡΠ°Π»ΡΠ½ΡΡ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠΎΠ², ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΡ Π·Π° 6 Π½Π΅Π΄Π΅Π»Ρ, ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Rust Π² Π΄Π²Π° ΡΠ°Π·Π° ΠΎΠΏΠ΅ΡΠ΅ΠΆΠ°Π»Π°, ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Π‘ΠΈ, Π½ΠΎ ΠΎΠ±Π΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡΡΡΠ°Π²Π°Π»ΠΈ ΠΎΡ ΡΠ°ΡΡΡΡΠ½ΠΎΠΉ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. ΠΠΎΡΠ»Π΅ 4 Π½Π΅Π΄Π΅Π»Ρ, Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΡ Π½Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ, ΠΎΠ±Π΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄ΠΎΡΡΠΈΠ³Π»ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°, Π±Π»ΠΈΠ·ΠΊΠΎΠ³ΠΎ ΠΊ ΡΠ°ΡΡΡΡΠ½ΠΎΠΌΡ ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌΡ.

ΠΠ·Π²ΠΎΡ: ΠΎΠΏΠ΅Π½Π½Π΅Ρ.ΡΡ
