ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎΡΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π½Π° Rust Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡΠ° Π³ΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΠΈ ΠΏΡΠ΅Π΄ΠΏΠ°Π·Π²Π° ΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ, ΠΏΡΠΎΠΈΠ·ΡΠΈΡΠ°ΡΠΈ ΠΎΡ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π½Π° Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ, ΠΊΠ°ΡΠΎ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΠ΅Π³ΠΈΠΎΠ½ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ°, ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ Π΅ Π±ΠΈΠ» ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄Π΅Π½, Π΄Π΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ Π½Π° Π½ΡΠ»Π΅Π² ΡΠΊΠ°Π·Π°ΡΠ΅Π», ΠΏΡΠ΅ΠΏΡΠ»Π²Π°Π½Π΅ Π½Π° Π±ΡΡΠ΅Ρ ΠΈ Ρ.Π½. Π Π°Π·ΡΠ°Π±ΠΎΡΠ²Π° ΡΠ΅ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ Π·Π° ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ³Π»ΠΎΠ±ΡΠ²Π°Π½Π΅ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
ΠΡΠ½ΠΎΠ²Π½Π°ΡΠ°
- Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΡΠΈΠΏΠΎΠ²Π΅
ΠΌΠ°ΡΠΈΠ²ΠΈ Π²ΡΡΠΊΠ°ΠΊΡΠ² ΡΠ°Π·ΠΌΠ΅Ρ. ΠΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π°, ΠΏΠΎΡΠ°Π΄ΠΈ Π½Π΅Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π΄Π° ΡΠ΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Ρ ΠΎΠ±ΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° Π²ΡΠΈΡΠΊΠΈ ΡΠ΅Π»ΠΈ ΡΠΈΡΠ»Π°, ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡΠ΅ Π²Π³ΡΠ°Π΄Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ ΡΠ°ΠΌΠΎ Π·Π° ΠΌΠ°ΡΠΈΠ²ΠΈ Ρ ΡΠ°Π·ΠΌΠ΅Ρ Π΄ΠΎ 32 Π΅Π»Π΅ΠΌΠ΅Π½ΡΠ° (Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈΡΠ΅ Π·Π° Π²ΡΠ΅ΠΊΠΈ ΡΠ°Π·ΠΌΠ΅Ρ Π±ΡΡ Π° ΡΡΠ°ΡΠΈΡΠ½ΠΎ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½ΠΈ). ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΡΠ° Π½Π° ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΈΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ½ΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π° (βconst Π³Π΅Π½Π΅ΡΠΈΡΠ½ΠΈβ), ΡΡΠ°Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Ρ Π³Π΅Π½Π΅ΡΠΈΡΠ½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π΅Π½ ΡΠ°Π·ΠΌΠ΅Ρ Π½Π° ΠΌΠ°ΡΠΈΠ²Π°, Π½ΠΎ ΡΠ΅ Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ ΡΠ° Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈ Π² ΡΡΠ°Π±ΠΈΠ»Π½ΠΈΡΠ΅ Π΅Π·ΠΈΠΊΠΎΠ²ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, Π²ΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ ΡΠ° Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈ Π² ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ° ΠΈ ΡΠ° ΡΠ΅Π³Π°ΡΡΠ°ΡΡΠ²Π°ΡΠΈ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π·Π° ΡΠ΅ΡΡΠΈ Π½Π° ΠΌΠ°ΡΠΈΠ² ΠΎΡ Π²ΡΡΠΊΠ°ΠΊΡΠ² ΡΠ°Π·ΠΌΠ΅Ρ.ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ»Π΅Π΄Π½Π°ΡΠ° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ Π² Rust 1.47 ΡΠ΅ ΠΎΡΠΏΠ΅ΡΠ°ΡΠ° ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΌΠ°ΡΠΈΠ², Π²ΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ ΠΏΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° Π±ΠΈ Π΄ΠΎΠ²Π΅Π»ΠΎ Π΄ΠΎ Π³ΡΠ΅ΡΠΊΠ°:
fn main() {
Π½Π΅ΠΊΠ° xs = [0; 34];println!("{:?}", xs);
} - ΠΡΠΈΠ³ΡΡΠ΅Π½ ΠΈΠ·Ρ
ΠΎΠ΄ Π½Π° ΠΏΠΎ-ΠΊΡΡΠΈ ΡΠ»Π΅Π΄ΠΈ (backtrace), ΠΈΠ·Ρ
ΠΎΠ΄ Π² Π°Π²Π°ΡΠΈΠΉΠ½ΠΈ ΡΠΈΡΡΠ°ΡΠΈΠΈ. ΠΠ»Π΅ΠΌΠ΅Π½ΡΠΈ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ Π² ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΡΠΈΡΡΠ°ΡΠΈΠΈ, Π½ΠΎ Π·Π°ΡΡΡΠΏΠ²Π°Ρ ΠΈΠ·Ρ
ΠΎΠ΄Π° ΠΈ ΠΎΡΠ²Π»ΠΈΡΠ°Ρ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ΡΠΎ ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΠΏΡΠΈΡΠΈΠ½ΠΈ Π·Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΡΠ΅ ΠΈΠ·ΠΊΠ»ΡΡΠ²Π°Ρ ΠΎΡ ΡΡΠ°ΡΠΈΡΠ°Π½Π΅ΡΠΎ. ΠΠ° Π΄Π° Π²ΡΡΠ½Π΅ΡΠ΅ ΠΏΡΠ»Π½ΠΎ ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ° Π½Π° ΡΡΠ΅Π΄Π°ΡΠ° "RUST_BACKTRACE=full". ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΠΊΠΎΠ΄Π°
fn main() {
ΠΏΠ°Π½ΠΈΠΊΠ°!();
}ΠΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ΡΠΎ ΡΠ΅ ΠΈΠ·Π²Π΅ΠΆΠ΄Π°ΡΠ΅ Π½Π° 23 Π΅ΡΠ°ΠΏΠ°, Π½ΠΎ ΡΠ΅Π³Π° ΡΠ΅ Π±ΡΠ΄Π΅ Π½Π°ΠΌΠ°Π»Π΅Π½ΠΎ Π΄ΠΎ
3 ΡΡΡΠΏΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π²Π΅Π΄Π½Π°Π³Π° Π΄Π° ΡΡ Π²Π°Π½Π΅ΡΠ΅ ΡΡΡΠ½ΠΎΡΡΡΠ°:Π½ΠΈΡΠΊΠ° 'main' ΡΠ΅ ΠΏΠ°Π½ΠΈΠΊΡΠΎΡΠ° ΠΏΡΠΈ 'ΡΠ²Π½Π° ΠΏΠ°Π½ΠΈΠΊΠ°', src/main.rs:2:5
ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠ΅ΠΊΠ°:
0: std::panicking::begin_panic
Π² /rustc/dβ¦d75a/library/std/src/panicking.rs:497
1: Π΄Π΅ΡΡΠΊΠ° ΠΏΠ»ΠΎΡΠ°Π΄ΠΊΠ°::Π³Π»Π°Π²Π½Π°
Π½Π° ./src/main.rs:2
2: core::ops::function::FnOnce::call_once
Π² /rustc/dβ¦d75a/library/core/src/ops/function.rs:227 - ΠΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΡΡ rustc Π΅ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½, Π·Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°
LLVM 11 (Π ΡΠΆΠ΄Π°ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° LLVM ΠΊΠ°ΡΠΎ Π±Π΅ΠΊΠ΅Π½Π΄ Π·Π°Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ΄ ). Π ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Ρ ΠΏΠΎ-ΡΡΠ°ΡΠΈ LLVM, Π΄ΠΎ Π²Π΅ΡΡΠΈΡ 8, ΡΠ΅ Π·Π°ΠΏΠ°Π·Π²Π°, Π½ΠΎ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ (Π²rust-lang/llvm-ΠΏΡΠΎΠ΅ΠΊΡ ) ΡΠ΅Π³Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° LLVM 11. ΠΡΠ°ΠΊΠ²Π° ΡΠ΅ LLVM 11 Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΡΠ½Π°Ρ Π² ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡΠ΅ Π΄Π½ΠΈ. - ΠΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Π½Π° Windows ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΡΡ rustc ΠΎΡΠΈΠ³ΡΡΡΠ²Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π·Π° ΡΠ΅Π»ΠΎΡΡΡΠ° Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊ (Control Flow Guard), Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠ»Π°Π³Π° β-C control-flow-guardβ. ΠΠ° Π΄ΡΡΠ³ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ ΡΠΎΠ·ΠΈ ΡΠ»Π°Π³ Π·Π°ΡΠ΅Π³Π° ΡΠ΅ ΠΈΠ³Π½ΠΎΡΠΈΡΠ°.
- ΠΠΎΠ²Π° ΡΠ°ΡΡ ΠΎΡ API Π΅ ΠΏΡΠ΅Ρ
Π²ΡΡΠ»Π΅Π½Π° Π² ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΡΠ° ΡΡΠ°Π±ΠΈΠ»Π½ΠΈ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ
ΠΠ΄Π΅Π½Ρ :: new_raw,
ΠΠΈΠ°ΠΏΠ°Π·ΠΎΠ½::Π΅_ΠΏΡΠ°Π·Π΅Π½,
RangeInclusive::is_empty,
Π Π΅Π·ΡΠ»ΡΠ°Ρ::as_deref,
Π Π΅Π·ΡΠ»ΡΠ°Ρ::as_deref_mut,
Vec::ΡΠ΅Ρ,
ΡΠΊΠ°Π·Π°ΡΠ΅Π» :: ΠΎΡΠΌΠ΅ΡΡΠ²Π°Π½Π΅ ΠΎΡ,
f32::TAU ΠΈ
f64::TAU. - ΠΡΡΠΈΠ±ΡΡΡΡ βconstβ, ΠΊΠΎΠΉΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Ρ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ ΠΌΡ Π²ΡΠ² Π²ΡΠ΅ΠΊΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π²ΠΌΠ΅ΡΡΠΎ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΈ, ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅:
- Π½ΠΎΠ²ΠΎ Π·Π° Π²ΡΠΈΡΠΊΠΈ ΡΠ΅Π»ΠΈ ΡΠΈΡΠ»Π°, ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΎΡ Π½ΡΠ»Π°;
- checked_add, checked_sub, checked_mul, checked_neg, checked_shl, checked_shr, saturating_add, saturating_sub ΠΈ saturating_mul Π·Π° Π²ΡΠΈΡΠΊΠΈ ΡΠ΅Π»ΠΈ ΡΠΈΡΠ»Π°;
- is_ascii_alphabetic, is_ascii_uppercase, is_ascii_lowercase, is_ascii_alphanumeric, is_ascii_digit, is_ascii_hexdigit, is_ascii_punctuation, is_ascii_graphic, is_ascii_whitespace ΠΈ is_ascii_control Π·Π° ΡΠΈΠΏΠΎΠ²Π΅ char ΠΈ u8.
- ΠΠ° FreeBSD
ΡΡΠ°ΡΡΠ²Π°ΡΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌ ΠΎΡ FreeBSD 11.4 (FreeBSD 10 Π½Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° LLVM 11).
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru