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