ΠΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ΠΎ Π΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅Π½ Π΅Π·ΠΈΠΊ Rust 1.51, ΠΎΡΠ½ΠΎΠ²Π°Π½ ΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° Mozilla, Π½ΠΎ ΡΠ΅Π³Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΏΠΎΠ΄ Π΅Π³ΠΈΠ΄Π°ΡΠ° Π½Π° Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠ°ΡΠ° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ Ρ Π½Π΅ΡΡΠΎΠΏΠ°Π½ΡΠΊΠ° ΡΠ΅Π» Rust Foundation. ΠΠ·ΠΈΠΊΡΡ ΡΠ΅ ΡΠΎΠΊΡΡΠΈΡΠ° Π²ΡΡΡ Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡΠ° Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ°, ΠΎΡΠΈΠ³ΡΡΡΠ²Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΡΡΠ΅Π΄ΡΡΠ²Π°ΡΠ° Π·Π° ΠΏΠΎΡΡΠΈΠ³Π°Π½Π΅ Π½Π° Π²ΠΈΡΠΎΠΊ ΠΏΠ°ΡΠ°Π»Π΅Π»ΠΈΠ·ΡΠΌ Π½Π° Π·Π°Π΄Π°ΡΠΈΡΠ΅ Π±Π΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΡΠ±ΠΈΡΠ°Ρ Π½Π° ΠΎΡΠΏΠ°Π΄ΡΡΠΈ ΠΈΠ»ΠΈ Π²ΡΠ΅ΠΌΠ΅ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ (Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π΅ Π½Π°ΠΌΠ°Π»Π΅Π½ΠΎ Π΄ΠΎ ΠΎΡΠ½ΠΎΠ²Π½Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°).
ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎΡΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π½Π° Rust Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡΠ° Π³ΡΠ΅ΡΠΊΠΈΡΠ΅ ΠΏΡΠΈ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΠΈ ΠΏΡΠ΅Π΄ΠΏΠ°Π·Π²Π° ΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ, ΠΏΡΠΎΠΈΠ·ΡΠΈΡΠ°ΡΠΈ ΠΎΡ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π½Π° Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ, ΠΊΠ°ΡΠΎ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΎΠ±Π»Π°ΡΡ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ°, ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ ΡΡ Π΅ Π±ΠΈΠ»Π° ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄Π΅Π½Π°, Π΄Π΅ΡΠ΅ΡΠ΅ΡΠΈΡΠ°Π½Π΅ Π½Π° Π½ΡΠ»Π΅Π² ΡΠΊΠ°Π·Π°ΡΠ΅Π», ΠΏΡΠ΅ΠΏΡΠ»Π²Π°Π½Π΅ Π½Π° Π±ΡΡΠ΅Ρ ΠΈ Ρ.Π½. ΠΠ° ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ³Π»ΠΎΠ±ΡΠ²Π°Π½Π΅ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΠΏΡΠΎΠ΅ΠΊΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡΠ° Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ Cargo. Π₯ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ crates.io ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° Π·Π° Ρ ΠΎΡΡΠ²Π°Π½Π΅ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ.
ΠΡΠ½ΠΎΠ²Π½ΠΈ ΠΈΠ½ΠΎΠ²Π°ΡΠΈΠΈ:
- Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΡΠ°, ΡΠ²ΡΡΠ·Π°Π½Π° Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΠ½ΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈ, ΠΏΠΎΠ»ΡΡΠΈ ΡΡΠ°ΡΡΡ Π½Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΎ ΠΆΠΈΠ·Π½Π΅ΡΠΏΠΎΡΠΎΠ±Π΅Π½ ΠΏΡΠΎΠ΄ΡΠΊΡ (MVP), ΠΊΠΎΠ΅ΡΠΎ Π΄Π°Π²Π° Π·Π΅Π»Π΅Π½Π° ΡΠ²Π΅ΡΠ»ΠΈΠ½Π° Π·Π° ΡΠΈΡΠΎΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅. Const Π³Π΅Π½Π΅ΡΠΈΡΠΈΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ ΡΠΈΠΏΠΎΠ²Π΅ΡΠ΅ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½ΠΈ Π΄ΠΎ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ, Ρ.Π΅. ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΠΎΠ±ΡΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈ, ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈ Π΄ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΎΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ, Π° Π½Π΅ ΡΠΈΠΏΠΎΠ²Π΅ ΠΈΠ»ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π° Π½Π° ΠΆΠΈΠ²ΠΎΡ. Π’Π°Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΡΠΈΠΏΠΎΠ²Π΅ ΠΈ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΠ·Π΄Π°Π²Π°ΡΠ΅ ΡΠ΅ΡΡΠΈ Π·Π° ΠΌΠ°ΡΠΈΠ²ΠΈ ΠΎΡ Π²ΡΡΠΊΠ°ΠΊΡΠ² ΡΠ°Π·ΠΌΠ΅Ρ, Π±Π΅Π· Π΄Π° ΡΠ΅ Π½Π°Π»Π°Π³Π° Π΄Π° ΡΡΠ·Π΄Π°Π²Π°ΡΠ΅ ΠΎΡΠ΄Π΅Π»Π΅Π½ ΡΠΈΠΏ Π·Π° Π²ΡΠ΅ΠΊΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΎΡ Π²Π°Π»ΠΈΠ΄Π½ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ, Π·Π° Π΄Π° ΡΡΠ΅ ΡΠΈΠ³ΡΡΠ½ΠΈ, ΡΠ΅ Π½ΡΠΌΠ° ΡΡΠ±ΠΈΡΠΈΡ ΠΈΠ·Π²ΡΠ½ Π³ΡΠ°Π½ΠΈΡΠΈΡΠ΅.
ΠΠ°ΠΏΠΎΡΠ²Π°ΠΉΠΊΠΈ Ρ ΡΠ΅ΠΊΡΡΠ°ΡΠ° Π²Π΅ΡΡΠΈΡ, Π·Π° ΠΌΠ°ΡΠΈΠ²ΠΈ Ρ ΡΠΈΠΏ β[T; N]" (ΡΠΈΠΏ T ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ N) ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° Π°Π±ΡΡΡΠ°Ρ ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΈΠΏ ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ, ΠΊΠ°ΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ Ρ Π²ΡΡΠΊΠ°ΠΊΠ²ΠΈ ΡΠ΅Π»ΠΈ ΡΠΈΡΠ»Π°, Π±ΡΠ»Π΅Π²ΠΈ ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Π½ΠΈ ΡΠΈΠΏΠΎΠ²Π΅ (ΡΠΈΠΏΠΎΠ²Π΅ΡΠ΅ struct ΠΈ enum Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ). ΠΠΎΡΡΠΎΡΠ½Π½ΠΈΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ½ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΎΠΏΡΠΎΡΡΡΠ²Π°Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ; Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΌΠ°ΡΠΈΠ², ΠΊΠΎΠΉΡΠΎ Π½Π΅ Π΅ ΠΎΠ±Π²ΡΡΠ·Π°Π½ Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ ΡΠΈΠΏ ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΡΠΎΡΠΈΡΠ΅: struct Array { // ^^^^^^ ^^^^^^^ ^^^^^^ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡ Π½Π° ΠΏΠΎΡΡΠΎΡΠ½Π΅Π½ ΠΎΠ±Ρ ΡΠΏΠΈΡΡΠΊ: [T; ΠΠͺΠΠΠΠΠ] // ^^^^^^ Π½Π΅Π³ΠΎΠ²Π°ΡΠ° ΡΠΏΠΎΡΡΠ΅Π±Π° }
ΠΠΎΠ³Π°ΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Ρ ΡΠ°Π·ΠΈ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡ Π½Π° "Array", ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΡΡ ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ° ΠΌΠΎΠ½ΠΎΠΌΠΎΡΡΠ½Π° Π²Π΅ΡΡΠΈΡ Π½Π° Array: struct Array { list: [u8; 32] }
- API std::array::IntoIter, Π±Π°Π·ΠΈΡΠ°Π½ Π½Π° ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΠ½ΠΈ ΠΊΠΎΠ΄ΠΎΠ²Π΅, Π΅ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Π½, Ρ ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΡΠ·Π΄Π°Π²Π°ΡΠ΅ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠΈ ΠΏΠΎ ΡΡΠΎΠΉΠ½ΠΎΡΡ Π·Π° Π²ΡΠ΅ΠΊΠΈ ΠΌΠ°ΡΠΈΠ²: fn main() { let array = [1, 2, 3, 4, 5] ; // ΠΡΠ΅Π΄ΠΈ, Π·Π° Π΄Π° ΠΈΡΠ΅ΡΠΈΡΠ°ΡΠ΅ ΡΡΠΎΠΉΠ½ΠΎΡΡ, ΡΡΡΠ±Π²Π°ΡΠ΅ Π΄Π° ΠΈΠ·Π²ΠΈΠΊΠ°ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° .iter() Π·Π° item Π² array.iter().copied() { println!("{}", item); } // Π‘Π΅Π³Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΡΠΎΡΠΈΡΠ΅ Π·Π° Π΅Π»Π΅ΠΌΠ΅Π½Ρ Π² std::array::IntoIter::new(array) { println!("{}", item); }}
- ΠΠ΅Π½ΠΈΠ΄ΠΆΡΡΡΡ Π½Π° ΡΠΎΠ²Π°ΡΠ½ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΈ Π²Π΅ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° Π½ΠΎΠ²ΠΎ ΠΏΠΎΠ»Π΅ Π·Π° ΡΠ΅Π·ΠΎΠ»Π²Π΅Ρ Π² Cargo.toml, ΠΊΠΎΠ΅ΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° Π²ΡΠΎΡΠ°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° ΡΠ΅Π·ΠΎΠ»Π²Π΅ΡΠ° Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° Π΄Π΅ΡΠΈΠ½Π°ΡΠΎΡΠ° ΠΈΠ·Π±ΡΠ³Π²Π° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΠΈΠ·Π±ΡΠΎΠ΅Π½ΠΈ Π² ΡΠ°Π·Π΄Π΅Π»Π° β[ΡΡΠ½ΠΊΡΠΈΠΈ]β, ΠΊΡΠ΄Π΅ΡΠΎ Π΅ Π½Π΅ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΡΡΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ Π²ΠΊΠ»ΡΡΠ²Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ, ΠΊΠΎΡΡΠΎ ΠΈΠ·ΠΈΡΠΊΠ²Π° Π½ΡΠΊΠ°ΠΊΠ²Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π° ΡΡΠ½ΠΊΡΠΈΡ Π² ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ ΠΈ ΠΌΠ°ΠΊΡΠΎΡΠΈ, Π½ΠΎ ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π° ΡΡΠ½ΠΊΡΠΈΡ Π² ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌ ΡΠ°ΠΉΠ».
ΠΠΎΡΠ΅Π³Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ, ΡΠΏΠΎΠΌΠ΅Π½Π°Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎ Π² Π³ΡΠ°ΡΠΈΠΊΠ°ΡΠ° Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈΡΠ΅, Π±ΡΡ Π° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°Π½ΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π°ΠΊΠΎ Π΄Π°Π΄Π΅Π½ ΠΏΡΠΎΠ΅ΠΊΡ Π²ΠΊΠ»ΡΡΠ²Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ foo, ΠΊΠΎΡΡΠΎ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ A ΠΈ B, ΠΈ ΡΠΎΠ·ΠΈ ΠΏΠ°ΠΊΠ΅Ρ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² Π΄ΡΡΠ³ΠΈΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΈ bar ΠΈ baz, Π²ΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ bar Π·Π°Π²ΠΈΡΠΈ ΠΎΡ foo Ρ ΡΡΠ½ΠΊΡΠΈΡ A, Π° baz Π·Π°Π²ΠΈΡΠΈ ΠΎΡ foo Ρ ΡΡΠ½ΠΊΡΠΈΡ B, ΡΠΎΠ³Π°Π²Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΡΡ ΡΠ΅ Π±ΡΠ΄Π΅, ΡΠ΅ cargo ΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ° ΡΠ΅Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ° foo Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ A ΠΈ B. Π’ΠΎΠ·ΠΈ ΠΌΠ΅ΡΠΎΠ΄ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΡΠΎ Π΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π° ΠΏΠΎΡΠ°Π΄ΠΈ Π½Π΅ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡ Π½Π° Π½ΡΠΊΠ°ΠΊΠ²Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ Ρ ΡΠ΅Π»Π΅Π²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°, Π·Π° ΠΊΠΎΡΡΠΎ Π΅ Π½Π°ΠΏΡΠ°Π²Π΅Π½Π° ΠΏΠΎΠ»ΡΡΠ΅Π½Π°ΡΠ° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π²Π΅ΡΡΠΈΡ Π½Π° foo Ρ "#![no_std]" Π² ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌ ΡΠ°ΠΉΠ», ΠΈΠ·Π³ΡΠ°Π΄Π΅Π½ Ρ "#![no_std]", ΠΈ Π² ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ foo Ρ "std" ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ΡΠΎ. rs. ΠΠΎΠ³Π°ΡΠΎ ΠΏΠΎΡΠΎΡΠΈΡΠ΅ resolver="2" Π² Cargo.toml, ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡΡΡ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ ΡΠ΅Π³Π° ΡΠ΅ ΡΠ΅ ΠΎΠΏΠΈΡΠ° Π΄Π° ΡΠ΅ ΡΠΏΡΠ°Π²ΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ Ρ ΡΠΎΠ·ΠΈ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ, ΡΠ°Π·Π΄Π΅Π»ΡΠΉΠΊΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈΡΠ΅ dev, host ΠΈ target.
- Cargo ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ° ΠΎΠΏΡΠΈΡΡΠ° split-debuginfo, Π·Π°Π΄Π°Π΄Π΅Π½Π° Π² ΡΠ΅ΠΊΡΠΈΡΡΠ° β[profile]β ΠΈ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΈΡ ΡΠ»Π°Π³ β-Csplit-debuginfo=unpackedβ Π² rustc, ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΠΉΠΊΠΈ ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ΡΠΎ Π½Π° Π½ΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄ Π·Π° Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ, ΠΊΠΎΠ΅ΡΠΎ Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΠ° ΠΎΡ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΠΌΠΎΡΠ½Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° dsymutil ΠΈ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΡΡΠΊΠΎΡΡΠ²Π° ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ Π² macOS.
- Π‘ΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Π½ makos "ptr::addr_of!" ΠΈ βptr::addr_of_mut!β, ΠΊΠΎΠΈΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π΄Π° ΡΡΠ·Π΄Π°Π²Π°ΡΠ΅ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π·Π° Π½Π΅ΠΏΠΎΠ΄ΡΠ°Π²Π½Π΅Π½ΠΈ ΠΏΠΎΠ»Π΅ΡΠ°. ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ std::ptr; #[repr(packed)] struct Packed { f1: u8, f2: u16, } let packed = Packed { f1: 1, f2: 2 }; // &packed.f2 ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ Π½Π΅ΠΏΠΎΠ΄ΡΠ°Π²Π½Π΅Π½ ΡΠΊΠ°Π·Π°ΡΠ΅Π», Π²ΠΎΠ΄Π΅Ρ Π΄ΠΎ Π½Π΅Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ let raw_f2 = ptr::addr_of!(packed.f2); assert_eq!(unsafe { raw_f2.read_unaligned() }, 2);
- ΠΠΎΠ²Π° ΡΠ°ΡΡ ΠΎΡ API Π΅ ΠΏΡΠ΅Ρ
Π²ΡΡΠ»Π΅Π½Π° Π² ΡΡΠ°Π±ΠΈΠ»Π½Π° ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΈ ΡΠ° ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ:
- Arc::decrement_strong_count
- Arc::increment_strong_count
- Once::call_once_force
- Peekable::next_if_eq
- Peekable::next_if
- Seek::stream_position
- array::IntoIter
- panic::panic_any
- ptr::addr_of!
- ptr::addr_of_mut!
- slice::fill_with
- slice::split_inclusive_mut
- slice::split_inclusive
- slice::strip_prefix
- slice::strip_suffix
- str::split_inclusive
- sync::OnceState
- Π·Π°Π΄Π°ΡΠ° :: Π‘ΡΠ±ΡΠΆΠ΄Π°Π½Π΅
- Π’ΡΠ΅ΡΠΎΡΠΎ Π½ΠΈΠ²ΠΎ Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π΅ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΎ Π·Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈΡΠ΅ i386-unknown-linux-gnu, i486-unknown-linux-gnu, aarch64_be-unknown-linux-gnu, aarch64-unknown-linux-gnu_ilp32 ΠΈ aarch64_be-unknown-linux-gnu_ilp32 . Π’ΡΠ΅ΡΠΎΡΠΎ Π½ΠΈΠ²ΠΎ Π²ΠΊΠ»ΡΡΠ²Π° ΠΎΡΠ½ΠΎΠ²Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°, Π½ΠΎ Π±Π΅Π· Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Π½ΠΎ ΡΠ΅ΡΡΠ²Π°Π½Π΅, ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅ Π½Π° ΠΎΡΠΈΡΠΈΠ°Π»Π½ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΠΈ ΠΈΠ»ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π΄Π°Π»ΠΈ ΠΊΠΎΠ΄ΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru