ΠΠ±ΡΠ°Π²Π΅Π½ΠΎ Π΅ ΠΎΠ±ΡΠ°Π²ΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΡΠΊΠΈΠΎΡ ΡΠ°Π·ΠΈΠΊ Π·Π° ΠΎΠΏΡΡΠ° Π½Π°ΠΌΠ΅Π½Π° Rust 1.78, ΠΎΡΠ½ΠΎΠ²Π°Π½ ΠΎΠ΄ ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ Mozilla, Π½ΠΎ ΡΠ΅Π³Π° ΡΠ°Π·Π²ΠΈΠ΅Π½ ΠΏΠΎΠ΄ ΠΏΠΎΠΊΡΠΎΠ²ΠΈΡΠ΅Π»ΡΡΠ²ΠΎ Π½Π° Π½Π΅Π·Π°Π²ΠΈΡΠ½Π°ΡΠ° Π½Π΅ΠΏΡΠΎΡΠΈΡΠ½Π° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΠ° Rust Foundation. ΠΠ°Π·ΠΈΠΊΠΎΡ ΡΠ΅ ΡΠΎΠΊΡΡΠΈΡΠ° Π½Π° Π±Π΅Π·Π±Π΅Π΄Π½ΠΎΡΡΠ° Π½Π° ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ° ΠΈ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° ΡΡΠ΅Π΄ΡΡΠ²Π° Π·Π° ΠΏΠΎΡΡΠΈΠ³Π½ΡΠ²Π°ΡΠ΅ Π½Π° Π²ΠΈΡΠΎΠΊ ΠΏΠ°ΡΠ°Π»Π΅Π»ΠΈΠ·Π°ΠΌ Π½Π° ΡΠ°Π±ΠΎΡΠ½ΠΈΡΠ΅ ΠΌΠ΅ΡΡΠ°, ΠΏΡΠΈΡΠΎΠ° ΠΈΠ·Π±Π΅Π³Π½ΡΠ²Π°ΡΡΠΈ ΡΠΏΠΎΡΡΠ΅Π±Π° Π½Π° ΡΠΎΠ±ΠΈΡΠ°Ρ Π½Π° ΡΡΠ±ΡΠ΅ ΠΈ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ° (Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΡΠ°Π±ΠΎΡΠ° Π΅ ΡΠ²Π΅Π΄Π΅Π½ΠΎ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½Π° ΠΈΠ½ΠΈΡΠΈΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡΠ° ΠΈ ΠΎΠ΄ΡΠΆΡΠ²Π°ΡΠ΅ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°).
ΠΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ Π·Π° ΡΠ°ΠΊΡΠ²Π°ΡΠ΅ ΡΠΎ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ° Π½Π° Rust Π³ΠΎ ΡΠΏΠ°ΡΡΠ²Π°Π°Ρ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΠΎΡ ΠΎΠ΄ Π³ΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ°ΡΠ΅ ΡΠΎ ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°ΡΠΈΡΠ΅ ΠΈ Π³ΠΎ ΡΡΠΈΡΠ°Ρ ΠΎΠ΄ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΡΡΠΎ ΡΠ΅ ΡΠ°Π²ΡΠ²Π°Π°Ρ ΠΏΠΎΡΠ°Π΄ΠΈ ΡΠ°ΠΊΡΠ²Π°ΡΠ΅ ΡΠΎ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ° Π½Π° Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ, ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ ΠΏΡΠΈΡΡΠ°ΠΏ Π΄ΠΎ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠΊΠ°ΡΠ° ΠΎΠ±Π»Π°ΡΡ ΠΎΡΠΊΠ°ΠΊΠΎ ΡΠ΅ ΡΠ΅ ΠΎΡΠ»ΠΎΠ±ΠΎΠ΄ΠΈ, Π΄Π΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈΡΠ°ΡΠ΅ Π½Π° Π½ΡΠ»Π° ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°ΡΠΈ, ΠΏΡΠ΅ΡΠ΅ΠΊΠΎΡΡΠ²Π°ΡΠ° Π½Π° Π±Π°ΡΠ΅ΡΠΎΡ ΠΈΡΠ½. ΠΠ° Π΄Π° ΡΠ΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, Π΄Π° ΡΠ΅ ΠΎΠ±Π΅Π·Π±Π΅Π΄Π°Ρ Π³ΡΠ°Π΄Π±ΠΈ ΠΈ Π΄Π° ΡΠΏΡΠ°Π²ΡΠ²Π°Π°Ρ ΡΠΎ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ, ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ Π³ΠΎ ΡΠ°Π·Π²ΠΈΠ²Π° ΠΌΠ΅Π½Π°ΡΠ΅ΡΠΎΡ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ Cargo. Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΠΌΠΎΡ crates.io Π΅ ΠΏΠΎΠ΄Π΄ΡΠΆΠ°Π½ Π·Π° Ρ ΠΎΡΡΠΈΡΠ°ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ.
ΠΠ΅Π·Π±Π΅Π΄Π½ΠΎΡΡΠ° Π½Π° ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ° Π΅ ΠΎΠ±Π΅Π·Π±Π΅Π΄Π΅Π½Π° Π²ΠΎ Rust Π·Π° Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ°ΡΠ΅ΡΠΎ ΠΏΡΠ΅ΠΊΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈ, ΡΠ»Π΅Π΄Π΅ΡΠ΅ Π½Π° ΡΠΎΠΏΡΡΠ²Π΅Π½ΠΎΡΡΠ° Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΡ, ΡΠ»Π΅Π΄Π΅ΡΠ΅ Π½Π° ΠΆΠΈΠ²ΠΎΡΠ½ΠΈΠΎΡ Π²Π΅ΠΊ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΈΡΠ΅ (ΠΎΠ±Π΅ΠΌΠΈ) ΠΈ ΠΏΡΠΎΡΠ΅Π½ΠΊΠ° Π½Π° ΠΈΡΠΏΡΠ°Π²Π½ΠΎΡΡΠ° Π½Π° ΠΏΡΠΈΡΡΠ°ΠΏΠΎΡ Π΄ΠΎ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ° Π·Π° Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠ΄ΠΎΡ. Rust ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° Π·Π°ΡΡΠΈΡΠ° ΠΎΠ΄ ΠΏΡΠ΅Π»Π΅Π²Π°ΡΠ΅ Π½Π° ΡΠ΅Π»ΠΈ Π±ΡΠΎΠ΅Π²ΠΈ, Π±Π°ΡΠ° Π·Π°Π΄ΠΎΠ»ΠΆΠΈΡΠ΅Π»Π½Π° ΠΈΠ½ΠΈΡΠΈΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡΠ° Π½Π° Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡΠ΅ ΠΏΡΠ΅Π΄ ΡΠΏΠΎΡΡΠ΅Π±Π°, ΠΏΠΎΠ΄ΠΎΠ±ΡΠΎ ΡΠ΅ ΡΠΏΡΠ°Π²ΡΠ²Π° ΡΠΎ Π³ΡΠ΅ΡΠΊΠΈΡΠ΅ Π²ΠΎ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΎ Π³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ²Π° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΎΡ Π½Π° Π½Π΅ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈ ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ, Π½ΡΠ΄ΠΈ ΡΠΈΠ»Π½ΠΎ ΡΡΠ°ΡΠΈΡΠΊΠΎ ΠΏΠΈΡΡΠ²Π°ΡΠ΅ Π·Π° Π΄Π° ΡΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠ°Π°Ρ Π»ΠΎΠ³ΠΈΡΠΊΠΈΡΠ΅ Π³ΡΠ΅ΡΠΊΠΈ.
ΠΠ»Π°Π²Π½ΠΈΡΠ΅ ΠΈΠ½ΠΎΠ²Π°ΡΠΈΠΈ:
- ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ Π΅ Π½ΠΎΠ² ΠΈΠΌΠ΅Π½ΡΠΊΠΈ ΠΏΡΠΎΡΡΠΎΡ Π·Π° Π°ΡΡΠΈΠ±ΡΡΠΈ β#[Π΄ΠΈΡΠ°Π³Π½ΠΎΡΡΠΈΡΠΊΠ°]β, ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π°ΡΡΠΈ ΡΡΠ΅Π΄ΡΡΠ²ΠΎ Π·Π° Π²Π»ΠΈΡΠ°Π½ΠΈΠ΅ Π²ΡΠ· ΠΏΠΎΡΠ°ΠΊΠΈΡΠ΅ Π·Π° Π³ΡΠ΅ΡΠΊΠΈ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈ ΠΎΠ΄ ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅ΡΠΎΡ. ΠΡΠ²ΠΈΠΎΡ Π²ΠΎ Π½ΠΎΠ²ΠΈΠΎΡ ΠΏΡΠΎΡΡΠΎΡ Π΅ Π°ΡΡΠΈΠ±ΡΡΠΎΡ β#[diagnostic::on_unimplemented]β, ΠΊΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° ΠΏΡΠΈΡΠΏΠΎΡΠΎΠ±ΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΠΎΡΠ°ΠΊΠΈΡΠ΅ Π·Π° Π³ΡΠ΅ΡΠΊΠ° ΡΡΠ»Π΅Π½ΠΈ Π²ΠΎ ΡΠΈΡΡΠ°ΡΠΈΡΠ° ΠΊΠΎΠ³Π° ΡΡΠ΅Π±Π° Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ° ΡΡΠΎ Π½Π΅ Π΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π½Π° Π·Π° ΡΠΈΠΏΠΎΡ. #[diagnostic::on_unimplemented( message = "ΠΠΎΡΠ°ΡΠ° ΠΏΠΎΡΠ°ΠΊΠ° Π·Π° `ΠΠ°ΠΆΠ½Π° ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ°<{A}>` Π½Π΅ Π΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π½Π° Π·Π° `{Self}`", label = "My Label", note = "ΠΠ°Π±Π΅Π»Π΅ΡΠΊΠ° 1", note = "ΠΠ°Π±Π΅Π»Π΅ΡΠΊΠ° 2" )] ΠΎΡΠΎΠ±ΠΈΠ½Π° ImportantTrait {} fn use_my_trait(_: impl ImportantTrait ) {} fn main() { use_my_trait(String::new()); } Π³ΡΠ΅ΡΠΊΠ°[E32]: ΠΠΎΡΠ° ΠΏΠΎΡΠ°ΠΊΠ° Π·Π° `ΠΠ°ΠΆΠ½Π° ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ° ` Π½Π΅ Π΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π½ Π·Π° `String` β> src/main.rs:0277:32 | 12 | use_my_trait(String::new()); | ββββ ^^^^^^^^^^^^^ My Label | | | ΡΠ΅ Π±Π°ΡΠ° ΠΎΠ΄ ΡΡΡΠ°Π½Π° Π½Π° ΠΎΠ±Π²ΡΠ·Π°Π½Π° Π²ΠΎΠ²Π΅Π΄Π΅Π½Π° ΡΠΎ ΠΎΠ²ΠΎΡ ΠΏΠΎΠ²ΠΈΠΊ | = ΠΏΠΎΠΌΠΎΡ: ΠΎΡΠΎΠ±ΠΈΠ½Π° `ΠΠ°ΠΆΠ½Π° ΠΎΡΠΎΠ±ΠΈΠ½Π° ` Π½Π΅ Π΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π½ Π·Π° `String` = Π·Π°Π±Π΅Π»Π΅ΡΠΊΠ°: ΠΠ°Π±Π΅Π»Π΅ΡΠΊΠ° 18 = Π·Π°Π±Π΅Π»Π΅ΡΠΊΠ°: ΠΠ°Π±Π΅Π»Π΅ΡΠΊΠ° 12
- ΠΡΠΎΠ²Π΅ΡΠΊΠΈΡΠ΅ Π·Π° ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΎ Π½Π°Π²Π΅Π΄ΡΠ²Π°ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅ΡΠΈ Π½Π° Π½Π΅Π±Π΅Π·Π±Π΅Π΄Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ΅Π³Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΠ΄Π»ΠΎΠΆΠ°Ρ Π΄ΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠ°ΡΠ΅ Π½Π° ΠΊΠΎΠ΄, ΡΡΠΎ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° ΠΎΠ²ΠΈΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π΄Π° ΡΠ΅ Π²ΡΡΠ°Ρ Π±Π΅Π· ΠΏΠΎΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ ΠΈΠ·Π³ΡΠ°Π΄ΠΈ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π²ΠΎ ΡΠ΅ΠΆΠΈΠΌΠΎΡ β#[cfg(debug_assertions)]β. ΠΠ° Π΄Π° ΡΠ΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π°Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈΡΠ΅, ΡΠ΅Π³Π° Π΅ Π΄ΠΎΠ²ΠΎΠ»Π½ΠΎ Π΄Π° ΡΠ΅ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠ°Ρ ΡΠ²ΡΠ΄Π΅ΡΠ°ΡΠ° Π·Π° ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°ΡΠ΅ Π³ΡΠ΅ΡΠΊΠΈ Π·Π° ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅ ΠΈΠ»ΠΈ Π΄Π΅Π±Π°Π³ΠΈΡΠ°ΡΠ΅ Π½Π° Π²Π°ΡΠΈΠΎΡ ΠΊΠΎΠ΄.
- ΠΠ΄Π½Π΅ΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ Π²ΠΎ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΊΠΎΠΈ Π²Π»ΠΈΡΠ°Π°Ρ Π½Π° ΠΏΠΎΡΠ°ΠΌΠ½ΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°ΡΠΈΡΠ΅ ΠΈ ΠΏΠ°ΡΡΠΈΡΠ°ΡΠ° ΡΠ΅Π³Π° Π΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄Π»ΠΈΠ²ΠΎ ΠΏΡΠΈ ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ ΠΈ Π·Π°Π²ΠΈΡΠΈ ΠΎΠ΄ Π²Π»Π΅Π·Π½ΠΈΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ. Π€ΡΠ½ΠΊΡΠΈΡΠΊΠΈΠΎΡ ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°Ρ::align_offset, ΠΊΠΎΡ Π³ΠΎ ΠΏΡΠ΅ΡΠΌΠ΅ΡΡΠ²Π° ΠΏΠΎΠΌΠ΅ΡΡΡΠ²Π°ΡΠ΅ΡΠΎ Π·Π° ΠΏΠΎΡΠ°ΠΌΠ½ΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°ΡΠΎΡ, ΡΠ΅Π³Π° Π²ΡΠ°ΡΠ° usize::MAX ΡΠ°ΠΌΠΎ Π°ΠΊΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠ°ΡΠ° Π½Π΅ ΡΡΠΏΠ΅Π΅. Π€ΡΠ½ΠΊΡΠΈΠΈΡΠ΅ slice::align_to ΠΈ slice::align_to_mut Π΄Π²Π΅ΡΠ΅, ΠΊΠΎΠΈ Π³ΠΈ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠΈΡΠ°Π°Ρ ΠΏΠ°ΡΡΠΈΡΠ°ΡΠ° Π²ΠΎ ΠΏΡΠ΅ΡΡΡΠ°Π²Π° ΡΠΎ ΠΏΠΎΡΠ°ΠΌΠ½Π΅Ρ ΡΡΠ΅Π΄Π΅Π½ ΠΏΠ°ΡΡΠ΅ ΠΈ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΈΡΠ΅ ΠΏΠΎΡΠ΅ΡΠ½ΠΈ ΠΈ ΠΊΡΠ°ΡΠ½ΠΈ ΠΏΠ°ΡΡΠΈΡΠ°, ΡΠ΅Π³Π° ΡΠ΅ΠΊΠΎΠ³Π°Ρ Π³ΠΎ Π²ΡΠ°ΡΠ°Π°Ρ Π½Π°ΡΠ³ΠΎΠ»Π΅ΠΌΠΈΠΎΡ ΡΡΠ΅Π΄Π΅Π½ Π΄Π΅Π».
- Π‘Π»Π΅Π΄Π½ΠΈΠ²Π΅ Π±Π΅Π° ΠΏΡΠ΅ΡΡΠ»Π΅Π½ΠΈ Π²ΠΎ ΡΡΠ°Π±ΠΈΠ»Π½Π° ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΠ°:
- ΠΈΠΌΠΏΠ» Π§ΠΈΡΠ°Ρ Π·Π° &Stdin
- ΠΠΎΠ·Π²ΠΎΠ»Π΅ΡΠ΅ ΡΠΏΠΎΡΡΠ΅Π±Π° Π½Π° Π½Π΅ΡΡΠ°ΡΠΈΡΠΊΠΈ (Π½Π΅ΡΡΠ°ΡΠΈΡΠΊΠΈ) Π²Π΅ΠΊ Π·Π° Π½Π΅ΠΊΠΎΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ std::error::Error.
- ΠΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° Π΄ΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΎ Π΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠ° ?Sized.
- ΠΈΠΌΠΏΠ» ΠΠ΄ Π·Π° io:: ΠΡΠ΅ΡΠΊΠ°
- Π€ΡΠ½ΠΊΡΠΈΡΠ°ΡΠ° Barrier::new() Π΅ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Π½Π° Π·Π° Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΡΠΎ Π°ΡΡΠΈΠ±ΡΡΠΎΡ βconstβ Π²ΠΎ ΠΊΠΎΡ Π±ΠΈΠ»ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π½Π°ΠΌΠ΅ΡΡΠΎ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΈ.
- ΠΠ° ΡΠ΅Π»Π½ΠΈΡΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ x86_64-pc-windows-msvc, i686-pc-windows-msvc, x86_64-pc-windows-gnu, i686-pc-windows-gnu, x86_64-pc-windows-gnullvm ΠΈ i686vwinllm-p ΡΠ΅Π³Π° Π±Π°ΡΠ° Π½Π°ΡΠΌΠ°Π»ΠΊΡ Π²Π΅ΡΠ·ΠΈΡΠ° Π½Π° Windows 10.
- Π’ΡΠ΅ΡΠΎΡΠΎ Π½ΠΈΠ²ΠΎ Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π½ΠΎ Π·Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈΡΠ΅ wasm32-wasip2, arm64ec-pc-windows-msvc, armv8r-none-eabihf ΠΈ loongarch64-unknown-linux-musl. Π’ΡΠ΅ΡΠΎΡΠΎ Π½ΠΈΠ²ΠΎ Π²ΠΊΠ»ΡΡΡΠ²Π° ΠΎΡΠ½ΠΎΠ²Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ°, Π½ΠΎ Π±Π΅Π· Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΎ ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅, ΠΎΠ±ΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΠΎΡΠΈΡΠΈΡΠ°Π»Π½ΠΈ ΠΈΠ·Π΄Π°Π½ΠΈΡΠ° ΠΈΠ»ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π΄Π°Π»ΠΈ ΠΊΠΎΠ΄ΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·Π³ΡΠ°Π΄ΠΈ.
- ΠΡΠΎΡΠΎΡΠΎ Π½ΠΈΠ²ΠΎ Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° ΡΠ΅Π»Π½Π°ΡΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Add wasm32-wasip1 Π΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π½ΠΎ. ΠΡΠΎΡΠΎΡΠΎ Π½ΠΈΠ²ΠΎ Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π²ΠΊΠ»ΡΡΡΠ²Π° Π³Π°ΡΠ°Π½ΡΠΈΡΠ° Π·Π° ΡΠΊΠ»ΠΎΠΏΡΠ²Π°ΡΠ΅.
- ΠΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° wasm32-wasi-preview1-threads Π΅ ΠΏΡΠ΅ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½Π° Π²ΠΎ wasm32-wasip1-threads.
- ΠΠΎΠΌΠΏΠ°ΡΠ»Π΅ΡΠΎΡ Π΅ ΠΏΡΠ΅ΡΡΠ»Π΅Π½ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈ LLVM 18. ΠΠΎΠ³Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ LLVM 18 Π·Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΈ x86-32 ΠΈ x86-64, ABI ΠΏΠΎΠ²ΡΠ·Π°Π½ ΡΠΎ ΡΠΈΠΏΠΎΠ²ΠΈΡΠ΅ u128 ΠΈ i128 Π΅ ΠΏΡΠΎΠΌΠ΅Π½Π΅Ρ.
- ΠΠΎ ΠΌΠ΅Π½Π°ΡΠ΅ΡΠΎΡ Π½Π° ΠΏΠ°ΠΊΡ Π·Π° ΠΊΠ°ΡΠ³ΠΎ, Π²Π΅ΡΠ·ΠΈΡΠ°ΡΠ° 4 Π½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈΡΠ΅ Π·Π° Π·Π°ΠΊΠ»ΡΡΡΠ²Π°ΡΠ΅ (lockfile v4) Π΅ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Π½Π°.
- ΠΠ°ΡΠ³ΠΎ ΠΈΠΌΠ° ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Π½ Π³Π»ΠΎΠ±Π°Π»Π΅Π½ ΠΊΠ΅Ρ ΡΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π·Π° Π½Π°ΡΠ½ΠΎΠ²ΠΎΡΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ. ΠΠ΅ΡΠΎΡ Π΅ Ρ ΠΎΡΡΠΈΡΠ°Π½ Π²ΠΎ ΠΊΠ΅ΡΠΎΡ $CARGO_HOME/.global ΡΠΎ ΠΏΠΎΠΌΠΎΡ Π½Π° SQLite ΠΈ ΡΠ΅ Π°ΠΆΡΡΠΈΡΠ° Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΈ Π·Π° Π΄Π° Π³ΠΈ ΠΎΠ΄ΡΠ°Π·ΠΈ Π½Π°ΡΠ½ΠΎΠ²ΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π²ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΡ, Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°ΡΠ° Π·Π° Π³Π°ΡΠ±Π°, Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΎΡ ΡΠΎ ΠΊΠΎΠ΄ΠΎΠ²ΠΈ, git ΠΊΠ»ΠΎΠ½ΠΎΡ ΠΈ git checkout.
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΡΠΊΠΈΠΎΡ ΡΠ°Π·ΠΈΠΊ Borgo ΡΠ΅ ΠΎΠ±ΠΈΠ΄ΡΠ²Π° Π΄Π° Π±ΠΈΠ΄Π΅ ΠΏΠΎΠ΅ΠΊΡΠΏΡΠ΅ΡΠΈΠ²Π΅Π½ ΠΎΠ΄ ΡΠ°Π·ΠΈΠΊΠΎΡ Go, Π½ΠΎ ΠΏΠΎΠΌΠ°Π»ΠΊΡ ΡΠ»ΠΎΠΆΠ΅Π½ ΠΎΠ΄ ΡΠ°Π·ΠΈΠΊΠΎΡ Rust. Borgo Π³ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ° Π½Π°ΡΠ΄ΠΎΠ±ΡΠΈΡΠ΅ ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ Π½Π° Go ΠΈ Rust, Π½Π°Π΄ΠΎΠΏΠΎΠ»Π½ΡΠ²Π°ΡΡΠΈ Π³ΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠΈΡΠ΅ Π½Π° ΡΠ΅ΠΊΠΎΡ ΡΠ°Π·ΠΈΠΊ. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, Go Π΅ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π΅Π½ ΠΈ ΡΠ°ΡΠ΅Π½, Π½ΠΎ Π½Π΅ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° Π½Π°ΠΏΡΠ΅Π΄Π½ΠΈ Π±Π΅Π·Π±Π΅Π΄Π½ΠΎΡΠ½ΠΈ ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ. ΠΠ°Π·ΠΈΠΊΠΎΡ Rust ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° Π°Π»Π°ΡΠΊΠΈ Π·Π° Π±Π΅Π·Π±Π΅Π΄Π½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°ΡΠ΅, Π½ΠΎ Π΅ ΠΏΡΠ΅ΠΌΠ½ΠΎΠ³Ρ ΠΊΠΎΠΌΠΏΠ»ΠΈΡΠΈΡΠ°Π½. ΠΡΠΎΠ΅ΠΊΡΠΎΡ Π³ΠΎ ΡΠ°Π·Π²ΠΈΠ²Π° ΠΠ°ΡΠΊΠΎ Π‘Π°ΠΌΠΏΠ΅Π»Π΅Π³ΡΠΈΠ½ΠΈ, Π°Π²ΡΠΎΡ Π½Π° βThe Simple Haskell Handbookβ ΠΈ ΡΠ°Π·Π²ΠΈΠ²Π°Ρ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ Π·Π° ΠΊΠΎΠ½ΡΠΈΠ½ΡΠΈΡΠ°Π½Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΠ° Quad CI.

Borgo ΠΊΠΎΡΠΈΡΡΠΈ ΡΡΠ°ΡΠΈΡΠΊΠΎ ΠΏΠΈΡΡΠ²Π°ΡΠ΅, ΡΠΈΠΏΠΎΠ²ΠΈ ΡΠ»ΠΈΡΠ½ΠΈ Π½Π° Go ΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠ° ΡΠ»ΠΈΡΠ½Π° Π½Π° Rust. ΠΠ°ΠΏΠΈΡΠΊΠΈΡΠ΅ ΡΠ΅ ΠΎΠΏΡΠΈΠΎΠ½Π°Π»Π½ΠΈ Π½Π° ΠΊΡΠ°ΡΠΎΡ ΠΎΠ΄ ΡΠ΅Π΄ΠΎΠ²ΠΈΡΠ΅ Π²ΠΎ ΠΊΠΎΠ΄ΠΎΡ ΠΠΎΡΠ³ΠΎ. ΠΠΎΠ΄ΠΎΡ Π½Π° Borgo ΡΠ΅ ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ° Π²ΠΎ ΠΏΡΠ΅ΡΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ Go ΡΡΠΎ Π΅ ΡΠ΅Π»ΠΎΡΠ½ΠΎ ΠΊΠΎΠΌΠΏΠ°ΡΠΈΠ±ΠΈΠ»Π½ΠΎ ΡΠΎ ΠΏΠΎΡΡΠΎΠ΅ΡΠΊΠΈΡΠ΅ Go ΠΏΠ°ΠΊΠ΅ΡΠΈ. ΠΠΎΠ΄ΠΎΡ Π½Π° ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅ΡΠΎΡ Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π²ΠΎ Rust ΠΈ ΡΠ΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½ΡΠ°ΡΠ° ISC. ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ fmt enum NetworkState { Loading, Failed(int), Success(T), } struct Response { title: string, duration: int, } fn main() { let res = Response { title: βHello worldβ, duration: 0, } let state = NetworkState.Success(res) let msg = match state { NetworkState.Loading => βΡΓ¨ ΡΡΡΠ΅ ΡΠ΅ Π²ΡΠΈΡΡΠ²Π°β, NetworkState.Failed(code) => fmt.Sprintf(βΠΠΎΠ±ΠΈΠ² ΠΊΠΎΠ΄ Π·Π° Π³ΡΠ΅ΡΠΊΠ°: %dβ, ΠΊΠΎΠ΄), NetworkState.Success (res) => res.title, } fmt.Println(msg) }
ΠΠ·Π²ΠΎΡ: opennet.ru
