ΠΠ·ΠΈΠΊΡΡ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ Rust 1.96, ΠΎΡΠ½ΠΎΠ²Π°Π½ ΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° Mozilla, Π½ΠΎ ΡΠ΅Π³Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΏΠΎΠ΄ Π΅Π³ΠΈΠ΄Π°ΡΠ° Π½Π° Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠ°ΡΠ° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ Ρ Π½Π΅ΡΡΠΎΠΏΠ°Π½ΡΠΊΠ° ΡΠ΅Π» Rust Foundation, Π±Π΅ΡΠ΅ ΠΏΡΡΠ½Π°Ρ. ΠΠ·ΠΈΠΊΡΡ ΡΠ΅ ΡΠΎΠΊΡΡΠΈΡΠ° Π²ΡΡΡ Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡΠ° Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° ΠΏΠΎΡΡΠΈΠ³Π°Π½Π΅ Π½Π° Π²ΠΈΡΠΎΠΊ ΠΏΠ°ΡΠ°Π»Π΅Π»ΠΈΠ·ΡΠΌ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°Π΄Π°ΡΠΈ, ΠΊΠ°ΡΠΎ ΡΡΡΠ΅Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΡΠ΅ ΡΠΏΡΠ°Π²Ρ Π±Π΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ±ΠΈΡΠ°Ρ Π½Π° Π±ΠΎΠΊΠ»ΡΠΊ ΠΈ ΡΡΠ΅Π΄Π° Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ (ΡΡΠ΅Π΄Π°ΡΠ° Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ΅ ΡΠ²Π΅ΠΆΠ΄Π° Π΄ΠΎ ΠΎΡΠ½ΠΎΠ²Π½Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°).
ΠΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π½Π° Rust ΡΠ° ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈ Π΄Π° Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡΠ°Ρ Π³ΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΠΈ Π΄Π° ΠΏΡΠ΅Π΄ΠΏΠ°Π·Π²Π°Ρ ΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ, ΠΏΡΠΎΠΈΠ·ΡΠΈΡΠ°ΡΠΈ ΠΎΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π½Π° Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ, ΠΊΠ°ΡΠΎ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΏΠ°ΠΌΠ΅Ρ ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ Π΅ Π±ΠΈΠ»Π° ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄Π΅Π½Π°, ΡΠ°Π·ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈΡΠ°Π½Π΅ Π½Π° Π½ΡΠ»Π΅Π²ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ, ΠΏΡΠ΅ΠΏΡΠ»Π²Π°Π½Π΅ Π½Π° Π±ΡΡΠ΅ΡΠ° ΠΈ Ρ.Π½. ΠΡΠΎΠ΅ΠΊΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡΠ° Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ Cargo Π·Π° ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΡΠ»Π΅ΡΠ½ΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΠΈΡΠ΅ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈΡΠ΅. Π₯ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ crates.io ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° Π·Π° Ρ ΠΎΡΡΠ²Π°Π½Π΅ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ.
ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡΠ° Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π΅ ΠΎΡΠΈΠ³ΡΡΠ΅Π½Π° Π² Rust ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ ΡΡΠ΅Π· ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ, ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π½Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΎΡΡΡΠ° Π½Π° ΠΎΠ±Π΅ΠΊΡΠ°, ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° ΠΆΠΈΠ²ΠΎΡ Π½Π° ΠΎΠ±Π΅ΠΊΡΠ° (ΠΎΠ±Ρ Π²Π°ΡΠΈ) ΠΈ ΠΎΡΠ΅Π½ΠΊΠ° Π½Π° ΠΊΠΎΡΠ΅ΠΊΡΠ½ΠΎΡΡΡΠ° Π½Π° Π΄ΠΎΡΡΡΠΏΠ° Π΄ΠΎ ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ΄Π°. Rust ΡΡΡΠΎ ΠΎΡΠΈΠ³ΡΡΡΠ²Π° Π·Π°ΡΠΈΡΠ° ΡΡΠ΅ΡΡ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½ΠΈ ΠΏΡΠ΅ΠΏΡΠ»Π²Π°Π½ΠΈΡ, ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡΠ΅ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΏΡΠ΅Π΄ΠΈ ΡΠΏΠΎΡΡΠ΅Π±Π°, ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° Π³ΡΠ΅ΡΠΊΠΈΡΠ΅ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ΅ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΠΏΡΠΈΠ»Π°Π³Π° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡΡΠ° Π·Π° Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΈ ΠΏΡΠ΅ΠΏΡΠ°ΡΠΊΠΈ ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΡΠΈΠ»Π½ΠΎ ΡΡΠ°ΡΠΈΡΠ½ΠΎ Π²ΡΠ²Π΅ΠΆΠ΄Π°Π½Π΅ Π·Π° ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡΠ΅ Π³ΡΠ΅ΡΠΊΠΈ.
ΠΡΠ½ΠΎΠ²Π½ΠΈ ΠΈΠ½ΠΎΠ²Π°ΡΠΈΠΈ:
- ΠΠΎΠ±Π°Π²Π»Π΅Π½ ΠΌΠΎΠ΄ΡΠ»Ρ 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
}fn main() {
assert_matches!(get_random_number(), 1..=6);
} - ΠΡΠΈ ΡΠ±ΠΎΡΠΊΠ΅ Π΄Π»Ρ ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ WebAssembly ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½Π° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ° ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΡΠΈΠΊΡ ΠΎΠΏΡΠΈΠΈ Β«βallow-undefinedΒ», ΡΠ°Π·ΡΠ΅ΡΠ°Π²ΡΠ΅ΠΉ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°Π»ΠΈΡΡ Π² ΠΈΠΌΠΏΠΎΡΡ ΠΈΠ· ΠΌΠΎΠ΄ΡΠ»Ρ Β«envΒ». ΠΡΠΈ ΡΠ±ΠΎΡΠΊΠ΅ Π΄Π»Ρ WebAssembly Π²ΡΠ΅ ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΎΠΉ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ. ΠΠ»Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΡΡΠ°ΡΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ Β«RUSTFLAGS=-Clink-arg=βallow-undefinedΒ» ΠΈΠ»ΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ β#[link(wasm_import_module = Β«envΒ»)]Β» Π² ΠΊΠΎΠ΄Π΅.
- ΠΠΎΠ²Π° ΡΠ°ΡΡ ΠΎΡ API Π΅ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ΅Π½Π° Π² ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΡΠ° Π½Π° ΡΡΠ°Π±ΠΈΠ»Π½ΠΈ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ ΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈΡΠ΅ Π½Π° Ρ
Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈΡΠ΅ ΡΠ° ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ:
- 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 Π½Π΅Π΄Π΅Π»Ρ, Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΡ Π½Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ, ΠΎΠ±Π΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄ΠΎΡΡΠΈΠ³Π»ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°, Π±Π»ΠΈΠ·ΠΊΠΎΠ³ΠΎ ΠΊ ΡΠ°ΡΡΡΡΠ½ΠΎΠΌΡ ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌΡ.

ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
