ΠΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ΠΎ Π΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅Π½ Π΅Π·ΠΈΠΊ Rust 1.55, ΠΎΡΠ½ΠΎΠ²Π°Π½ ΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° Mozilla, Π½ΠΎ ΡΠ΅Π³Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΏΠΎΠ΄ Π΅Π³ΠΈΠ΄Π°ΡΠ° Π½Π° Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠ°ΡΠ° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ Ρ Π½Π΅ΡΡΠΎΠΏΠ°Π½ΡΠΊΠ° ΡΠ΅Π» Rust Foundation. ΠΠ·ΠΈΠΊΡΡ ΡΠ΅ ΡΠΎΠΊΡΡΠΈΡΠ° Π²ΡΡΡ Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡΠ° Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ°, ΠΎΡΠΈΠ³ΡΡΡΠ²Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΡΡΠ΅Π΄ΡΡΠ²Π°ΡΠ° Π·Π° ΠΏΠΎΡΡΠΈΠ³Π°Π½Π΅ Π½Π° Π²ΠΈΡΠΎΠΊ ΠΏΠ°ΡΠ°Π»Π΅Π»ΠΈΠ·ΡΠΌ Π½Π° Π·Π°Π΄Π°ΡΠΈΡΠ΅ Π±Π΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΡΠ±ΠΈΡΠ°Ρ Π½Π° ΠΎΡΠΏΠ°Π΄ΡΡΠΈ ΠΈΠ»ΠΈ Π²ΡΠ΅ΠΌΠ΅ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ (Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π΅ Π½Π°ΠΌΠ°Π»Π΅Π½ΠΎ Π΄ΠΎ ΠΎΡΠ½ΠΎΠ²Π½Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°).
ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎΡΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π½Π° Rust Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡΠ° Π³ΡΠ΅ΡΠΊΠΈΡΠ΅ ΠΏΡΠΈ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΠΈ ΠΏΡΠ΅Π΄ΠΏΠ°Π·Π²Π° ΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ, ΠΏΡΠΎΠΈΠ·ΡΠΈΡΠ°ΡΠΈ ΠΎΡ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π½Π° Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ, ΠΊΠ°ΡΠΎ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΎΠ±Π»Π°ΡΡ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ°, ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ ΡΡ Π΅ Π±ΠΈΠ»Π° ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄Π΅Π½Π°, Π΄Π΅ΡΠ΅ΡΠ΅ΡΠΈΡΠ°Π½Π΅ Π½Π° Π½ΡΠ»Π΅Π² ΡΠΊΠ°Π·Π°ΡΠ΅Π», ΠΏΡΠ΅ΠΏΡΠ»Π²Π°Π½Π΅ Π½Π° Π±ΡΡΠ΅Ρ ΠΈ Ρ.Π½. ΠΠ° ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ³Π»ΠΎΠ±ΡΠ²Π°Π½Π΅ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΠΏΡΠΎΠ΅ΠΊΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡΠ° Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ Cargo. Π₯ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ crates.io ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° Π·Π° Ρ ΠΎΡΡΠ²Π°Π½Π΅ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ.
ΠΡΠ½ΠΎΠ²Π½ΠΈ ΠΈΠ½ΠΎΠ²Π°ΡΠΈΠΈ:
- ΠΠ΅Π½ΠΈΠ΄ΠΆΡΡΡΡ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ Cargo ΠΈΠΌΠ° ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡΠ° Π΄Π° ΠΎΠ±Π΅Π΄ΠΈΠ½ΡΠ²Π° Π΄ΡΠ±Π»ΠΈΡΠ°ΡΠΈ ΡΠ΅ Π³ΡΠ΅ΡΠΊΠΈ ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ, ΠΊΠΎΠΈΡΠΎ Π²ΡΠ·Π½ΠΈΠΊΠ²Π°Ρ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ. ΠΡΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΊΠ°ΡΠΎ "cargo test" ΠΈ "cargo check --all-targets", ΠΊΠΎΠΈΡΠΎ Π²ΠΎΠ΄ΡΡ Π΄ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΠΈ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ, Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ Π²Π΅ΡΠ΅ ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΎΠ±ΠΎΠ±ΡΠ΅Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΠΏΠΎΡΠ²Π°ΡΠ° Π½Π° ΠΏΠΎΠ²ΡΠ°ΡΡΡ ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Π²ΠΌΠ΅ΡΡΠΎ Π΄Π° ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΡΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° Π΅Π΄Π½ΠΎ ΠΈ ΡΡΡΠΎ Π½Π΅ΡΠΎ. $ cargo +1.55.0 check βall-targets ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° foo v0.1.0 ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅: ΡΡΠ½ΠΊΡΠΈΡΡΠ° Π½ΠΈΠΊΠΎΠ³Π° Π½Π΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°: 'foo' β> src/lib.rs:9:4 | 9 | fn foo() {} | ^^^ | = Π·Π°Π±Π΅Π»Π΅ΠΆΠΊΠ°: '#[warn(dead_code)]' Π²ΠΊΠ»ΡΡΠ΅Π½ΠΎ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅: 'foo' (lib) Π³Π΅Π½Π΅ΡΠΈΡΠ° 1 ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅: 'foo' (lib ΡΠ΅ΡΡ) Π³Π΅Π½Π΅ΡΠΈΡΠ° 1 ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ (1 Π΄ΡΠ±Π»ΠΈΠΊΠ°Ρ) ΠΠ°Π²ΡΡΡΠ΅Π½ dev [unoptimized + debuginfo] target (s) Π·Π° 0.84 s
- ΠΠΎΠ΄ΡΡ Π·Π° ΡΠ°Π·Π±ΠΎΡ Ρ ΠΏΠ»Π°Π²Π°ΡΠ° Π·Π°ΠΏΠ΅ΡΠ°Ρ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π±Π΅ΡΠ΅ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ΅Π½, Π·Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΠΎ-Π±ΡΡΠ·ΠΈΡ ΠΈ ΠΏΠΎ-ΡΠΎΡΠ΅Π½ Π°Π»Π³ΠΎΡΠΈΡΡΠΌ Π½Π° Eisel-Lemire, ΠΊΠΎΠΉΡΠΎ ΡΠ°Π·ΡΠ΅ΡΠΈ Π½ΡΠΊΠΎΠΈ Π½Π°Π±Π»ΡΠ΄Π°Π²Π°Π½ΠΈ ΠΏΠΎ-ΡΠ°Π½ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΡΡΡ Π·Π°ΠΊΡΡΠ³Π»ΡΠ²Π°Π½Π΅ ΠΈ ΡΠ°Π·Π±ΠΎΡ Π½Π° ΡΠΈΡΠ»Π° Ρ ΠΌΠ½ΠΎΠ³ΠΎ Π³ΠΎΠ»ΡΠΌ Π±ΡΠΎΠΉ ΡΠΈΡΡΠΈ.
- ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΡΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° Π½Π΅Π·Π°ΡΠ²ΠΎΡΠ΅Π½ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΈ Π² ΡΠ°Π±Π»ΠΎΠ½ΠΈ Π΅ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Π½Π° (βX..β ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠ° ΠΊΠ°ΡΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½, ΠΊΠΎΠΉΡΠΎ Π·Π°ΠΏΠΎΡΠ²Π° ΡΡΡ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° X ΠΈ Π·Π°Π²ΡΡΡΠ²Π° Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½Π°ΡΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ Π½Π° ΡΠΈΠΏΠ° integer): ΡΡΠΏΠΎΡΡΠ°Π²Π΅ΡΠ΅ x ΠΊΠ°ΡΠΎ u32 { 0 => println! (βΠ½ΡΠ»Π°!β), 1.. => println!("ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»Π½ΠΎ ΡΠΈΡΠ»ΠΎ!"), }
- Π Π°Π·ΡΠΈΡΠ΅Π½ΠΈ Π²Π°ΡΠΈΠ°Π½ΡΠΈ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ, ΠΎΠ±Ρ Π²Π°Π½Π°ΡΠΈ ΠΎΡ std::io::ErrorKind (ΠΊΠ»Π°ΡΠΈΡΠΈΡΠΈΡΠ° Π³ΡΠ΅ΡΠΊΠΈΡΠ΅ Π² ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ ΠΊΠ°ΡΠΎ NotFound ΠΈ WouldBlock). ΠΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° Π³ΡΠ΅ΡΠΊΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΡΠ΅ Π²ΠΏΠΈΡΠ²Π°Ρ Π° Π² ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈΡΠ΅ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ, ΠΏΠΎΠΏΠ°Π΄Π°Ρ Π° Π² ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΡΠ° ErrorKind::Other, ΠΊΠΎΡΡΠΎ ΡΡΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π·Π° Π³ΡΠ΅ΡΠΊΠΈ Π² ΠΊΠΎΠ΄Π° Π½Π° ΡΡΠ΅ΡΠΈ ΡΡΡΠ°Π½ΠΈ. ΠΠ΅ΡΠ΅ ΠΈΠΌΠ° ΠΎΡΠ΄Π΅Π»Π½Π° Π²ΡΡΡΠ΅ΡΠ½Π° ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ ErrorKind::Uncategorized Π·Π° Π³ΡΠ΅ΡΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΡΠ΅ Π²ΠΏΠΈΡΠ²Π°Ρ Π² ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ, Π° ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΡΠ° ErrorKind::Other Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π° Π΄ΠΎ Π³ΡΠ΅ΡΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΡΠ΅ ΡΡΠ΅ΡΠ°Ρ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° (ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΠΊΠΎΠΈΡΠΎ Π²ΡΡΡΠ°Ρ io::Error Π²Π΅ΡΠ΅ Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΡΠ° ErrorKind:: Other).
- ΠΠΎΠ²Π° ΡΠ°ΡΡ ΠΎΡ API Π΅ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ΅Π½Π° Π² ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΡΠ° Π½Π° ΡΡΠ°Π±ΠΈΠ»Π½ΠΈ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ ΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈΡΠ΅ Π½Π° Ρ
Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈΡΠ΅ ΡΠ° ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ:
- ΠΠ±Π²ΡΡΠ·Π°Π½ :: ΠΊΠ»ΠΎΠ½ΠΈΡΠ°Π½
- ΠΠ·ΡΠΎΡΠ²Π°Π½Π΅::as_str
- IntoInnerError::into_error
- IntoInnerError::into_parts
- ΠΠΎΠΆΠ΅ Π±ΠΈUninit::assume_init_mut
- ΠΠΎΠΆΠ΅ Π±ΠΈUninit::assume_init_ref
- ΠΠΎΠΆΠ΅ Π±ΠΈUninit::write
- ΠΌΠ°ΡΠΈΠ²::ΠΊΠ°ΡΡΠ°
- ops::ControlFlow
- x86::_bittest
- x86::_bittestandcomplement
- x86::_bittestandreset
- x86::_bittestandset
- x86_64::_bittest64
- x86_64::_bittestandcomplement64
- x86_64::_bittestandreset64
- x86_64::_bittestandset64
- ΠΡΡΠΈΠ±ΡΡΡΡ βconstβ, ΠΊΠΎΠΉΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Ρ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ ΠΌΡ Π²ΡΠ² Π²ΡΠ΅ΠΊΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π²ΠΌΠ΅ΡΡΠΎ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΈ, ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ΠΌΠ΅ΡΠΎΠ΄Π° str::from_utf8_unchecked.
- Π’ΡΠ΅ΡΠΎΡΠΎ Π½ΠΈΠ²ΠΎ Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π΅ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΎ Π·Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° powerpc64le-unknown-freebsd. Π’ΡΠ΅ΡΠΎΡΠΎ Π½ΠΈΠ²ΠΎ Π²ΠΊΠ»ΡΡΠ²Π° ΠΎΡΠ½ΠΎΠ²Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°, Π½ΠΎ Π±Π΅Π· Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Π½ΠΎ ΡΠ΅ΡΡΠ²Π°Π½Π΅, ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅ Π½Π° ΠΎΡΠΈΡΠΈΠ°Π»Π½ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΠΈ ΠΈΠ»ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π΄Π°Π»ΠΈ ΠΊΠΎΠ΄ΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru