tg-me.com/rust_lib/234
Last Update:
π¦ Zero-cost abstractions β ΠΌΠΈΡ ΠΈΠ»ΠΈ ΠΌΠ°Π³ΠΈΡ?
ΠΠ΄Π½Π° ΠΈΠ· Π³Π»Π°Π²Π½ΡΡ
ΡΠΈΡΠ΅ΠΊ Rust β zero-cost abstractions. ΠΠ²ΡΡΠΈΡ ΠΊΡΡΡΠΎ, Π½ΠΎ ΡΡΠΎ ΡΡΠΎ Π½Π° Π΄Π΅Π»Π΅?
π¦ ΠΠΎΠ³Π΄Π° ΡΡ ΠΏΠΈΡΠ΅ΡΡ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ ΠΊΠΎΠ΄ (Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΈ, ΠΈΡΠ΅ΡΠ°ΡΠΎΡΡ, ΡΡΠ΅ΠΉΡΡ), ΡΡ ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΠ»Π°ΡΠΈΡΡ ΡΠ΅Π½ΠΎΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. ΠΠΎ Π½Π΅ Π² Rust.
π§ Rust-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ (LLVM) Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΌΠΎΠ½ΠΎΠ½ΠΈΠ·ΠΈΡΡΠ΅Ρ (ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ) ΠΊΠΎΠ΄ β ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠ±ΠΎΠ±ΡΡΠ½Π½ΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π² ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅, Π° Π½Π΅Π½ΡΠΆΠ½ΡΠ΅ β Π²ΡΠΊΠΈΠ΄ΡΠ²Π°Π΅Ρ. Π ΠΈΡΠΎΠ³Π΅ ΡΠ²ΠΎΠΈ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ Π½Π΅ ΡΠΎΡΠΌΠΎΠ·ΡΡ, Π° ΠΊΠΎΠ΄ ΠΎΡΡΠ°ΡΡΡΡ ΡΠΈΡΠ°Π΅ΠΌΡΠΌ.
ΠΡΠΈΠΌΠ΅Ρ:
fn square<T: Copy + std::ops::Mul<Output = T>>(x: T) -> T {
x * x
}
Π’Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΎΠ±ΡΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ Π΄Π»Ρ
i32
, f64
, ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅ β Π±Π΅Π· ΠΎΠ²Π΅ΡΡ
Π΅Π΄Π°.β‘οΈ Rust Π΄Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΈΡΠ°ΡΡ Π²ΡΡΠ°Π·ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄ Π±Π΅Π· ΡΡΡΠ°Ρ Π° ΠΏΠΎΡΠ΅ΡΡΡΡ Π² ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠ΅. ΠΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ ΡΡΠ°Π» Π»ΡΠ±ΠΈΠΌΡΠ΅ΠΌ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΠΏΠΈΡΡΡΠΈΡ ΠΈ ΠΏΠΎΠ΄ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ, ΠΈ ΠΏΠΎΠ΄ Π²Π΅Π±.
π§© Π ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡ zero-cost ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ Π² ΡΠ²ΠΎΡΠΌ ΠΊΠΎΠ΄Π΅? ΠΠ΅Π»ΠΈΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ !
π @rust_lib
BY Rust

Share with your friend now:
tg-me.com/rust_lib/234