ΠΠ²ΡΠΎΠΌΠ°ΡΡΠΊΠΎΡΠΎ ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ° Π½Π° Rust Π³ΠΎ ΠΎΡΠ»ΠΎΠ±ΠΎΠ΄ΡΠ²Π° ΡΠ°Π·Π²ΠΈΠ²Π°ΡΠΎΡ ΠΎΠ΄ ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΈΡΠ° ΡΠΎ ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°ΡΠΎΡ ΠΈ Π·Π°ΡΡΠΈΡΡΠ²Π° ΠΎΠ΄ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΠΊΠΎΠΈ ΠΏΡΠΎΠΈΠ·Π»Π΅Π³ΡΠ²Π°Π°Ρ ΠΎΠ΄ ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΈΡΠ° ΡΠΎ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ° Π½Π° Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ, ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ ΠΏΠΎ-ΡΠ»ΠΎΠ±ΠΎΠ΄Π΅Π½ ΠΏΡΠΈΡΡΠ°ΠΏ Π΄ΠΎ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ°, Π΄Π΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ Π½Π° Π½ΡΠ»Π° ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°Ρ, ΠΏΡΠ΅ΡΠ΅ΠΊΠΎΡΡΠ²Π°ΡΠ° Π½Π° Π±Π°ΡΠ΅ΡΠΎΡ ΠΈ ΡΠ»ΠΈΡΠ½ΠΎ. Π‘Π΅ ΡΠ°Π·Π²ΠΈΠ²Π° ΠΌΠ΅Π½Π°ΡΠ΅Ρ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ Π·Π° Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΠ° Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π°ΡΠ΅ Π½Π° ΡΠΊΠ»ΠΎΠΏΡΠ²Π°ΡΠ΅ ΠΈ ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈΡΠ΅ ΠΎΠ΄ ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ.
ΠΠ»Π°Π²Π½ΠΈΡΠ΅
- ΠΠ°ΠΊΡΠΎΠ°ΡΠ° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π°Π°Ρ ΠΌΠΎΠΆΠ½ΠΎΡΡ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ°Ρ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΈ ΠΎΠ΄ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ Π·Π° Π΄Π° ΡΠ΅ ΠΏΡΠ΅ΡΠ²ΠΎΡΠ°Ρ Π²ΠΎ ΠΊΠΎΠ΄ Π·Π° ΡΡΡΠΈ (ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ°), ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ (impl) ΠΈΠ»ΠΈ Π½Π°Π΄Π²ΠΎΡΠ΅ΡΠ½ΠΈ Π±Π»ΠΎΠΊΠΎΠ²ΠΈ. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΌΠ°ΠΊΡΠΎ_ΠΏΡΠ°Π²ΠΈΠ»Π°! mac_trait {
($i:item) => {
ΠΎΡΠΎΠ±ΠΈΠ½Π° Π’ { $i }
}
}
mac_trait! {
fn foo() {}
}ΠΠ΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡΠ°:
ΠΎΡΠΎΠ±ΠΈΠ½Π° Π’ {
fn foo() {}
} - ΠΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΎ ΠΎΡΠΊΡΠΈΠ²Π°ΡΠ΅ ΡΠΈΠΏ Π½Π° ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΈ, ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈ ΠΈ Π±ΠΈΠ½Π°ΡΠ½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ.
ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ»Π΅Π΄Π½ΠΈΠΎΡ ΠΊΠΎΠ΄, ΠΊΠΎΡ ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΎ ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ° Π³ΡΠ΅ΡΠΊΠ°, ΡΠ΅Π³Π° ΡΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ° (Rust ΡΠ΅Π³Π° ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΠΎΠ΄ΡΠ΅Π΄ΡΠ²Π° Π΄Π΅ΠΊΠ° 0.0 ΠΈ &0.0 ΠΌΠΎΡΠ° Π΄Π° Π±ΠΈΠ΄Π°Ρ ΠΎΠ΄ ΡΠΈΠΏΠΎΡ f32):Π½Π΅ΠΊΠ° n: f32 = 0.0 + & 0.0;
- ΠΠΎ Cargo Π΅ Π΄ΠΎΠ΄Π°Π΄Π΅Π½Π° Π½ΠΎΠ²Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π½Π° ΠΆΠΈΠ²ΠΎΡΠ½Π°ΡΠ° ΡΡΠ΅Π΄ΠΈΠ½Π° CARGO_BIN_EXE_{name}, ΠΊΠΎΡΠ° ΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΡΠ²Π° ΠΏΡΠΈ Π³ΡΠ°Π΄Π΅ΡΠ΅ Π½Π° ΡΠ΅ΡΡΠΎΠ²ΠΈ Π·Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΠ° ΠΈ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° ΡΠ° ΠΎΠ΄ΡΠ΅Π΄ΠΈΡΠ΅ ΡΠ΅Π»ΠΎΡΠ½Π°ΡΠ° ΠΏΠ°ΡΠ΅ΠΊΠ° Π΄ΠΎ ΠΈΠ·Π²ΡΡΠ½Π°ΡΠ° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½Π° Π²ΠΎ Π΄Π΅Π»ΠΎΡ β[[bin]]β ΠΎΠ΄ ΠΏΠ°ΠΊΠ΅ΡΠΎΡ.
- ΠΠΊΠΎ Π½Π° ΠΈΠ·ΡΠ°Π²ΠΈΡΠ΅ ΠΈΠΌ Π΅ Π΄ΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΎ Π΄Π° ΠΊΠΎΡΠΈΡΡΠ°Ρ Π°ΡΡΠΈΠ±ΡΡΠΈ ΠΊΠ°ΠΊΠΎ β#[cfg()]β.
- ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΠΏΠΎΠ²ΡΠ·Π°Π½ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π·Π° ΡΠ΅Π»ΠΎΠ±ΡΠΎΡΠ½ΠΈ ΠΈ ΡΡΠ°ΠΊΡΠΈΠΎΠ½ΠΈ ΡΠΈΠΏΠΎΠ²ΠΈ, Π±Π΅Π· ΡΠ²ΠΎΠ· Π½Π° ΠΌΠΎΠ΄ΡΠ». ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²Π΅Π΄Π½Π°Ρ Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ u32::MAX ΠΈΠ»ΠΈ f32::NAN Π±Π΅Π· ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΎ Π΄Π° Π½Π°Π²Π΅Π΄Π΅ΡΠ΅ βuse std::u32β ΠΈ βuse std::f32β.
- ΠΠΎΠ΄Π°Π΄Π΅Π½ Π΅ Π½ΠΎΠ² ΠΌΠΎΠ΄ΡΠ»
ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π΅Π½ , ΠΊΠΎΡ ΡΠ΅Π΅ΠΊΡΠΏΠΎΡΡΠΈΡΠ° Rust ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΠΈ ΡΠΈΠΏΠΎΠ²ΠΈ, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ³Π° ΡΡΠ΅Π±Π° Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ ΠΌΠ°ΠΊΡΠΎ ΠΈ Π΄Π° Π±ΠΈΠ΄Π΅ΡΠ΅ ΡΠΈΠ³ΡΡΠ½ΠΈ Π΄Π΅ΠΊΠ° ΡΠΈΠΏΠΎΠ²ΠΈΡΠ΅ Π½Π΅ ΡΠ΅ ΡΠΊΡΠΈΠ΅Π½ΠΈ. - ΠΠΎΠ² Π΄Π΅Π» ΠΎΠ΄ API Π΅ ΠΏΡΠ΅ΡΡΠ»Π΅Π½ Π²ΠΎ ΡΡΠ°Π±ΠΈΠ»Π½Π° ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΠ°, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΈ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ
ΠΡΠΊΠ°ΠΊΠΎ::is_completed,
f32::LOG10_2,
f32::LOG2_10,
f64::LOG10_2,
f64::LOG2_10 ΠΈ
iter::once_with.
ΠΠ·Π²ΠΎΡ: opennet.ru