ΠΠ±ΡΠ°Π²Π΅Π½ Π΅ ΡΠΈΡΡΠ΅ΠΌΡΠΊΠΈΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΡΠΊΠΈ ΡΠ°Π·ΠΈΠΊ Rust 1.34, ΡΠ°Π·Π²ΠΈΠ΅Π½ ΠΎΠ΄ ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ Mozilla. ΠΠ°Π·ΠΈΠΊΠΎΡ ΡΠ΅ ΡΠΎΠΊΡΡΠΈΡΠ° Π½Π° Π±Π΅Π·Π±Π΅Π΄Π½ΠΎΡΡΠ° Π½Π° ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ°, ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΎ ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ° ΠΈ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° ΡΡΠ΅Π΄ΡΡΠ²ΠΎ Π·Π° ΠΏΠΎΡΡΠΈΠ³Π½ΡΠ²Π°ΡΠ΅ Π²ΠΈΡΠΎΠΊ ΠΏΠ°ΡΠ°Π»Π΅Π»ΠΈΠ·Π°ΠΌ Π½Π° Π·Π°Π΄Π°ΡΠΈΡΠ΅ Π±Π΅Π· ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΡΠΎΠ±ΠΈΡΠ°Ρ Π½Π° ΡΡΠ±ΡΠ΅ ΠΈΠ»ΠΈ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ°.
ΠΠ²ΡΠΎΠΌΠ°ΡΡΠΊΠΎΡΠΎ ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ° Π½Π° Rust Π³ΠΎ ΠΎΡΠ»ΠΎΠ±ΠΎΠ΄ΡΠ²Π° ΡΠ°Π·Π²ΠΈΠ²Π°ΡΠΎΡ ΠΎΠ΄ ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΈΡΠ° ΡΠΎ ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°ΡΠΎΡ ΠΈ Π·Π°ΡΡΠΈΡΡΠ²Π° ΠΎΠ΄ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΠΊΠΎΠΈ ΠΏΡΠΎΠΈΠ·Π»Π΅Π³ΡΠ²Π°Π°Ρ ΠΎΠ΄ ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΈΡΠ° ΡΠΎ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ° Π½Π° Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ, ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ ΠΏΠΎ-ΡΠ»ΠΎΠ±ΠΎΠ΄Π΅Π½ ΠΏΡΠΈΡΡΠ°ΠΏ Π΄ΠΎ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ°, Π΄Π΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ Π½Π° Π½ΡΠ»Π° ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°Ρ, ΠΏΡΠ΅ΡΠ΅ΠΊΠΎΡΡΠ²Π°ΡΠ° Π½Π° Π±Π°ΡΠ΅ΡΠΎΡ ΠΈ ΡΠ»ΠΈΡΠ½ΠΎ. ΠΠ° Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΠ° Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π°ΡΠ΅ Π½Π° ΡΠΊΠ»ΠΎΠΏΡΠ²Π°ΡΠ΅ ΠΈ ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ, ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ Π³ΠΎ ΡΠ°Π·Π²ΠΈΠ²Π° ΠΌΠ΅Π½Π°ΡΠ΅ΡΠΎΡ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ Cargo, ΠΊΠΎΡ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° Π³ΠΈ Π΄ΠΎΠ±ΠΈΠ΅ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΈ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ° ΡΠΎ Π΅Π΄Π΅Π½ ΠΊΠ»ΠΈΠΊ. Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΠΌΠΎΡ crates.io Π΅ ΠΏΠΎΠ΄Π΄ΡΠΆΠ°Π½ Π·Π° Ρ ΠΎΡΡΠΈΡΠ°ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ.
ΠΠ»Π°Π²Π½ΠΈΡΠ΅ ΠΈΠ½ΠΎΠ²Π°ΡΠΈΠΈ:
- ΠΠ΅Π½Π°ΡΠ΅ΡΠΎΡ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ Cargo Π΄ΠΎΠ΄Π°Π΄Π΅ Π°Π»Π°ΡΠΊΠΈ Π·Π° ΡΠ°Π±ΠΎΡΠ° ΡΠΎ Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΠΈ ΡΠ΅Π³ΠΈΡΡΡΠΈ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ ΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΊΠΎΠ΅Π³Π·ΠΈΡΡΠΈΡΠ°Π°Ρ ΡΠΎ ΡΠ°Π²Π½ΠΈΠΎΡ ΡΠ΅Π³ΠΈΡΡΠ°Ρ crates.io. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°Π·Π²ΠΈΠ²Π°ΡΠΈΡΠ΅ Π½Π° ΠΊΠΎΠΌΠ΅ΡΡΠΈΡΠ°Π»Π½ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ ΡΠ΅Π³Π° ΠΌΠΎΠΆΠ°Ρ Π΄Π° ΠΊΠΎΡΠΈΡΡΠ°Ρ ΡΠΎΠΏΡΡΠ²Π΅Π½ ΠΏΡΠΈΠ²Π°ΡΠ΅Π½ ΡΠ΅Π³ΠΈΡΡΠ°Ρ, ΠΊΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΠΏΡΠΈ Π½Π°Π²Π΅Π΄ΡΠ²Π°ΡΠ΅ Π½Π° Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ Π²ΠΎ Cargo.toml ΠΈ Π΄Π° ΠΏΡΠΈΠΌΠ΅Π½ΡΠ²Π°Π°Ρ ΠΌΠΎΠ΄Π΅Π» Π·Π° Π²Π΅ΡΠ·ΠΈΠΈ ΡΠ»ΠΈΡΠ΅Π½ Π½Π° crates.io Π·Π° Π½ΠΈΠ²Π½ΠΈΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈ, ΠΊΠ°ΠΊΠΎ ΠΈ Π΄Π° Π³ΠΈ ΡΠΏΠ°ΡΡΠ²Π°Π°Ρ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° Π΄Π²Π°ΡΠ° Π³Π°ΡΠ±ΠΈ. io ΠΈ Π²ΠΎ Π²Π°ΡΠΈΠΎΡ ΡΠΎΠΏΡΡΠ²Π΅Π½ ΡΠ΅Π³ΠΈΡΡΠ°Ρ.
ΠΠ° Π΄Π° Π΄ΠΎΠ΄Π°Π΄Π΅ΡΠ΅ Π½Π°Π΄Π²ΠΎΡΠ΅ΡΠ΅Π½ ΡΠ΅Π³ΠΈΡΡΠ°Ρ Π½Π° ~/.cargo/config
Π½ΠΎΠ²Π° ΠΎΠΏΡΠΈΡΠ° βΠΌΠΎΡΠΎΡ ΡΠ΅Π³ΠΈΡΡΠ°Ρβ Π΅ ΠΎΠ±Π΅Π·Π±Π΅Π΄Π΅Π½Π° Π²ΠΎ Π΄Π΅Π»ΠΎΡ β[ΡΠ΅Π³ΠΈΡΡΡΠΈ]β, Π° ΠΎΠΏΡΠΈΡΠ°ΡΠ° βΠ΄ΡΡΠ³ΠΎ-Π³Π°ΡΠ±Π°β Π΅ Π΄ΠΎΠ΄Π°Π΄Π΅Π½Π° Π·Π° Π΄Π° ΡΠ΅ ΡΠΏΠΎΠΌΠ΅Π½Π΅ Π½Π°Π΄Π²ΠΎΡΠ΅ΡΠ½ΠΈΠΎΡ ΡΠ΅Π³ΠΈΡΡΠ°Ρ Π²ΠΎ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ Π²ΠΎ Cargo.toml Π²ΠΎ Π΄Π΅Π»ΠΎΡ β[Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ]β. ΠΠ° Π΄Π° ΡΠ΅ ΠΏΠΎΠ²ΡΠ·Π΅ΡΠ΅ ΡΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π΅Π½ ΡΠ΅Π³ΠΈΡΡΠ°Ρ, Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ ΡΡΠ°Π²Π΅ΡΠ΅ Π³ΠΎ ΡΠΎΠΊΠ΅Π½ΠΎΡ Π·Π° Π°Π²ΡΠ΅Π½ΡΠΈΠΊΠ°ΡΠΈΡΠ° Π²ΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°ΡΠ° ~/.cargo/credentials ΠΈ ΠΈΠ·Π²ΡΡΠ΅ΡΠ΅ ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ°
βcargo login --registry=my-registryβ ΠΈ Π΄Π° ΠΎΠ±ΡΠ°Π²ΠΈ ΠΏΠ°ΠΊΠ΅Ρ -
"cargo publish -registry=my-registry"; - ΠΠΎΠ΄Π°Π΄Π΅Π½Π° Π΅ ΡΠ΅Π»ΠΎΡΠ½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΡ β?β. Π²ΠΎ doctests, ΠΊΠΎΠΈ Π²ΠΈ Π΄ΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Π°Ρ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄ ΠΎΠ΄ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ°ΡΠ° ΠΊΠ°ΠΊΠΎ ΡΠ΅ΡΡΠΎΠ²ΠΈ. ΠΡΠ΅ΡΡ
ΠΎΠ΄Π½ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ
"?" ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ Π³ΡΠ΅ΡΠΊΠΈ Π·Π° Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΡΠ΅ΡΡΠΎΡ ΡΠ°ΠΌΠΎ Π²ΠΎ ΠΏΡΠΈΡΡΡΡΠ²ΠΎ Π½Π° ΡΡΠ½ΠΊΡΠΈΡΠ°ΡΠ° βfn main()β ΠΈΠ»ΠΈ Π²ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ β#[test]β; - ΠΠΎ ΡΠΎΠΏΡΡΠ²Π΅Π½ΠΈΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΠΈ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½ΠΈ ΡΠΎ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°Π»Π½ΠΈ ΠΌΠ°ΠΊΡΠΎΠ°, ΠΌΠΎΠΆΠ½ΠΎ Π΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΡΠΎΠΊΠ΅Π½ΠΈ (β#[attr($tokens)]β, β#[attr[$tokens]] ΠΈ #[attr{$tokens}]β) . ΠΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΎ, Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ΅ ΠΌΠΎΠΆΠ΅Π° Π΄Π° ΡΠ΅ Π½Π°Π²Π΅Π΄Π°Ρ ΡΠ°ΠΌΠΎ Π²ΠΎ ΡΠΎΡΠΌΠ° Π½Π° Π΄ΡΠ²ΠΎ/ΡΠ΅ΠΊΡΡΠ·ΠΈΠ²Π½Π° ΡΠΎΡΠΌΠ° ΡΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° Π±ΡΠΊΠ²Π°Π»Π½ΠΈ ΠΆΠΈΡΠΈ, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ β#[foo(bar, baz(quux, foo = βΠ±Π°Ρβ))]β, Π½ΠΎ ΡΠ΅Π³Π° Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ°Ρ Π½Π°Π±ΡΠΎΡΡΠ²Π°ΡΠ° (' #[ΠΎΠΏΡΠ΅Π³(0. .10)]') ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΊΠ°ΠΊΠΎ β#[bound(T: MyTrait)]β;
- ΠΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈΡΠ΅ TryFrom ΠΈ TryInto ΡΠ΅ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ, ΡΡΠΎ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° ΠΊΠΎΠ½Π²Π΅ΡΠ·ΠΈΡΠ° Π½Π° ΡΠΈΠΏΠΎΠ²ΠΈ ΡΠΎ ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ Π³ΡΠ΅ΡΠΊΠΈ. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ ΠΊΠ°ΠΊΠΎ from_be_bytes ΡΠΎ ΡΠ΅Π»ΠΎΠ±ΡΠΎΡΠ½ΠΈ ΡΠΈΠΏΠΎΠ²ΠΈ ΠΊΠΎΡΠΈΡΡΠ°Ρ Π½ΠΈΠ·ΠΈ ΠΊΠ°ΠΊΠΎ Π²Π»Π΅Π·, Π½ΠΎ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅ ΡΠ΅ΡΡΠΎ Π΄ΠΎΠ°ΡΠ°Π°Ρ Π²ΠΎ Slice ΡΠΈΠΏ, Π° ΡΠ°ΡΠ½ΠΎ Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΡΠΈΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ° ΠΏΠΎΠΌΠ΅ΡΡ Π½ΠΈΠ·ΠΈ ΠΈ ΠΏΠ°ΡΡΠΈΡΠ°. Π‘ΠΎ ΠΏΠΎΠΌΠΎΡ Π½Π° Π½ΠΎΠ²ΠΈ ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ, Π½Π°Π²Π΅Π΄Π΅Π½Π°ΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΠΈ Π²ΠΎ Π»Π΅Ρ ΠΏΡΠ΅ΠΊΡ ΠΏΠΎΠ²ΠΈΠΊ Π΄ΠΎ .try_into(), Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, βΠ½Π΅ΠΊΠ° num = u32::from_be_bytes(slice.try_into()?)β. ΠΠ° ΠΊΠΎΠ½Π²Π΅ΡΠ·ΠΈΠΈ ΠΊΠΎΠΈ ΡΠ΅ΠΊΠΎΠ³Π°Ρ ΡΡΠΏΠ΅Π²Π°Π°Ρ (Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ΄ ΡΠΈΠΏΠΎΡ u8 Π΄ΠΎ u32), Π΄ΠΎΠ΄Π°Π΄Π΅Π½ Π΅ ΡΠΈΠΏ Π½Π° Π³ΡΠ΅ΡΠΊΠ° Infallible Π·Π° Π΄Π° ΡΠ΅ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈ ΡΡΠ°Π½ΡΠΏΠ°ΡΠ΅Π½ΡΠ½Π° ΡΠΏΠΎΡΡΠ΅Π±Π° Π½Π°
TryFrom Π·Π° ΡΠΈΡΠ΅ ΠΏΠΎΡΡΠΎΠ΅ΡΠΊΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π½Π° βΠΠ΄β; - ΠΠ° ΠΎΡΡΡΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡΠ°ΡΠ° CommandExt::before_exec, ΠΊΠΎΡΠ° Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈ ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ Π½Π° ΡΠΏΡΠ°Π²ΡΠ²Π°Ρ ΠΏΡΠ΅Π΄ exec ΠΊΠΎΡ Π±Π΅ΡΠ΅ ΠΈΠ·Π²ΡΡΠ΅Π½ Π²ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π½Π° Π΄Π΅ΡΠ΅ ΠΏΡΠΎΡΠ΅Ρ ΡΠΎΡΠΊΠΈΡΠ°Π½ ΠΏΠΎ ΠΏΠΎΠ²ΠΈΠΊΠΎΡ fork(). ΠΠΎ ΡΠ°ΠΊΠ²ΠΈ ΡΡΠ»ΠΎΠ²ΠΈ, Π½Π΅ΠΊΠΎΠΈ ΡΠ΅ΡΡΡΡΠΈ Π½Π° ΠΌΠ°ΡΠΈΡΠ½ΠΈΠΎΡ ΠΏΡΠΎΡΠ΅Ρ, ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΈ Π½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ ΠΈ ΠΌΠ°ΠΏΠΈΡΠ°Π½ΠΈ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠΊΠΈ ΠΎΠ±Π»Π°ΡΡΠΈ, ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π΄ΡΠΏΠ»ΠΈΡΠ°Π°Ρ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π½Π΅Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½ΠΎ ΠΎΠ΄Π½Π΅ΡΡΠ²Π°ΡΠ΅ ΠΈ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΡΠ°Π±ΠΎΡΠ΅ΡΠ΅ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈΡΠ΅.
ΠΠ°ΠΌΠ΅ΡΡΠΎ Before_exec, ΡΠ΅ ΠΏΡΠ΅ΠΏΠΎΡΠ°ΡΡΠ²Π° Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π½Π΅Π±Π΅Π·Π±Π΅Π΄Π½Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΡΠ° CommandExt::pre_exec. - Π‘ΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΡΠΈΠΏΠΎΠ²ΠΈ Π½Π° Π°ΡΠΎΠΌΡΠΊΠΈ ΡΠ΅Π»ΠΈ Π±ΡΠΎΠ΅Π²ΠΈ ΡΠΎ Π·Π½Π°ΠΊ ΠΈ Π±Π΅Π· Π·Π½Π°ΠΊ ΡΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π° ΠΎΠ΄ 8 Π΄ΠΎ 64 Π±ΠΈΡΠ° (Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, AtomicU8), ΠΊΠ°ΠΊΠΎ ΠΈ ΡΠΈΠΏΠΎΠ²ΠΈ ΡΠΎ Π·Π½Π°ΠΊ NonZeroI[8|16|32|54|128].
- ΠΠΎΠ² Π΄Π΅Π» ΠΎΠ΄ API Π΅ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ΅Π½ Π²ΠΎ ΡΡΠ°Π±ΠΈΠ»Π½Π° ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΠ°, Π²ΠΊΠ»ΡΡΡΠ²Π°ΡΡΠΈ Π³ΠΎ Any::type_id, Error::type_id, slice::sort_by_cached_key, str::escape_*, str::split_ascii_whitespace, Instant::checked_[add|sub ] ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ SystemTime ΡΠ΅ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ::checked_[add|sub]. Π€ΡΠ½ΠΊΡΠΈΠΈΡΠ΅ iter::from_fn ΠΈ iter::successors ΡΠ΅ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ;
- ΠΠ° ΡΠΈΡΠ΅ ΡΠΈΠΏΠΎΠ²ΠΈ ΡΠ΅Π»ΠΈ Π±ΡΠΎΠ΅Π²ΠΈ, ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ checked_pow, saturating_pow, wrapping_pow ΠΈ overflowing_pow ΡΠ΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π½ΠΈ;
- ΠΠΎΠ΄Π°Π΄Π΅Π½Π° Π΅ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ Π·Π° ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π°ΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π²ΠΎ ΡΠ°Π·Π°ΡΠ° Π½Π° ΠΏΠΎΠ²ΡΠ·ΡΠ²Π°ΡΠ΅ ΡΠΎ Π½Π°Π²Π΅Π΄ΡΠ²Π°ΡΠ΅ Π½Π° ΠΎΠΏΡΠΈΡΠ°ΡΠ° Π·Π° Π³ΡΠ°Π΄Π΅ΡΠ΅ β-C linker-plugin-ltoβ (rustc Π³ΠΎ ΡΠΎΡΡΠ°Π²ΡΠ²Π° Rust-ΠΊΠΎΠ΄ΠΎΡ Π²ΠΎ Π±ΠΈΡΠΊΠΎΠ΄ LLVM, ΡΡΠΎ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° ΠΏΡΠΈΠΌΠ΅Π½Π° Π½Π° LTO ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈΡΠ΅).
ΠΠ·Π²ΠΎΡ: opennet.ru