เบเบฒเบชเบฒเบเบฒเบเบเบฝเบเปเบเบฅเปเบเบฅเบกเบเบตเปเบกเบตเบเบธเบเบเบฐเบชเบปเบเบเบปเปเบงเปเบ Rust 1.82, เบชเปเบฒเบเบเบฑเปเบเบเบถเปเบเปเบเบเปเบเบเบเบฒเบ Mozilla เปเบเปเปเบเบเบฑเบเบเบธเบเบฑเบเปเบเปเบฎเบฑเบเบเบฒเบเบเบฑเบเบเบฐเบเบฒเบเบฒเบเปเบเปเบเบฒเบเบญเบธเบเบฐเบเปเบฒเบเบญเบเบญเบปเบเบเบฒเบเปเบญเบเบฐเบฅเบฒเบเบเบตเปเบเปเปเบซเบงเบฑเบเบเบปเบเบเปเบฒเปเบฅ Rust Foundation, เปเบเปเบเบทเบเบเปเบญเบเบญเบญเบเบกเบฒ. เบเบฒเบชเบฒเบเบตเปเปเบเบฑเปเบเปเบชเปเบเบงเบฒเบกเบเบญเบเปเบเบเบญเบเบเบงเบฒเบกเบเบปเบเบเปเบฒเปเบฅเบฐเบชเบฐเบซเบเบญเบเบงเบดเบเบตเบเบฒเบเปเบเบทเปเบญเบเบฑเบเบฅเบธเบเบงเบฒเบกเบเบฐเบซเบเบฒเบเบเบญเบเบงเบฝเบเบชเบนเบเปเบเบเบฐเบเบฐเบเบตเปเบซเบผเบตเบเปเบงเบฑเปเบเบเบฒเบเบเปเบฒเปเบเปเปเบเบทเปเบญเบเปเบเบฑเบเบเบตเปเปเบซเบเบทเปเบญเปเบฅเบฐเปเบงเบฅเบฒเปเบฅเปเบ (runtime เบซเบผเบธเบเบฅเบปเบเปเบเบฑเบเบเบทเปเบเบเบฒเบเปเบเบทเปเบญเบเบเบปเปเบเปเบฅเบฐเบเบฒเบเบฎเบฑเบเบชเบฒเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบกเบฒเบเบเบฐเบเบฒเบ).
เบงเบดเบเบตเบเบฒเบเบเบฑเบเบเบฒเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒเบเบญเบ Rust เบเปเบงเบเบเบฐเบขเบฑเบเบเบฑเบเบเบฑเบเบเบฐเบเบฒเบเบฒเบเบเบงเบฒเบกเบเบดเบเบเบฒเบเปเบเปเบงเบฅเบฒเบเบตเป manipulating pointers เปเบฅเบฐเบเปเบญเบเบเบฑเบเบเบฑเบเบซเบฒเบเบตเปเปเบเบตเบเบเบทเปเบเปเบเบทเปเบญเบเบเบฒเบเบเบฒเบเบเบฑเบเบเบฒเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒเบฅเบฐเบเบฑเบเบเปเปเบฒ, เปเบเบฑเปเบ: เบเบฒเบเปเบเบปเปเบฒเปเบเบดเบเบเบทเปเบเบเบตเปเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒเบซเบผเบฑเบเบเบฒเบเบเบตเปเบกเบฑเบเปเบเปเบเบทเบเบเบปเบเบเปเบญเบ, dereferencing null pointers, buffer overruns, เปเบฅเบฐเบญเบทเปเบเป. เปเบเบทเปเบญเปเบเบเบขเบฒเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบ, เบชเบฐเบซเบเบญเบเบเบฒเบเบเปเปเบชเปเบฒเบเปเบฅเบฐเบเบฒเบเบเบธเปเบกเบเบญเบเบเบฒเบเปเบเบดเปเบเบเบฒเบญเบฒเปเบช, เปเบเบเบเบฒเบเบเบฑเบเบเบฐเบเบฒเบเบนเปเบเบฑเบเบเบฒเบเบเบธเบเบชเบดเบเบเปเบฒ. เบเบฑเบเปเบเบฑเบ crates.io เปเบเปเบฎเบฑเบเบเบฒเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเบฑเบเปเบเบปเปเบฒเบเบฒเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบ.
เบเบงเบฒเบกเบเบญเบเปเบเบเบญเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒเปเบกเปเบเบชเบฐเบซเบเบญเบเปเบซเปเบขเบนเปเปเบ Rust เปเบเปเบงเบฅเบฒเบฅเบงเบเบฅเบงเบกเปเบเบเบเปเบฒเบเบเบฒเบเบเบงเบเบชเบญเบเบเบฒเบเบญเปเบฒเบเบญเบดเบ, เบเบฒเบเบเบดเบเบเบฒเบกเบเบงเบฒเบกเปเบเบฑเบเปเบเบปเปเบฒเบเบญเบเบงเบฑเบเบเบธ, เบเบฒเบเบเบดเบเบเบฒเบกเบญเบฒเบเบธเบเบญเบเบงเบฑเบเบเบธ (เบเบญเบเปเบเบ), เปเบฅเบฐเบเบฒเบเบเบฐเปเบกเบตเบเบเบงเบฒเบกเบเบทเบเบเปเบญเบเบเบญเบเบเบฒเบเปเบเบปเปเบฒเปเบเบดเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒเปเบเบฅเบฐเบซเบงเปเบฒเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบฅเบฐเบซเบฑเบ. Rust เบเบฑเบเบชเบฐเบซเบเบญเบเบเบฒเบเบเปเบญเบเบเบฑเบเบเบฒเบ overflows integer, เบฎเบฝเบเบฎเปเบญเบเปเบซเปเบกเบตเบเบฒเบเปเบฅเบตเปเบกเบเบปเปเบเบเบฑเบเบเบฑเบเบเบญเบเบเปเบฒเบเบปเบงเปเบเบเปเบญเบเบเบฒเบเบเปเบฒเปเบเป, เบเบฑเบเบเบฒเบเบเบงเบฒเบกเบเบดเบเบเบฒเบเบเบตเปเบเบตเบเบงเปเบฒเปเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบกเบฒเบเบเบฐเบเบฒเบ, เบเปเบฒเปเบเปเปเบเบงเบเบงเบฒเบกเบเบดเบเบเบญเบเบเบฒเบเบญเปเบฒเบเบญเบดเบ immutable เปเบฅเบฐเบเบปเบงเปเบเปเบเบเบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบ, เบชเบฐเบซเบเบญเบเบเบฒเบเบเบดเบกเบเบปเบเบเบตเปเบเบตเปเปเบเบฑเปเบกเปเบเบเปเบเบทเปเบญเบซเบผเบธเบเบเปเบญเบเบเบงเบฒเบกเบเบดเบเบเบฒเบเบขเปเบฒเบเบกเบตเปเบซเบเบเบปเบ.
เบเบฐเบงเบฑเบเบเบฐเบเปเบฒเบเบปเปเบเบเป:
- เบเปเบฒเบชเบฑเปเบ "เบเปเปเบกเบนเบ" เปเบเปเบเบทเบเปเบเบตเปเบกเปเบชเปเบเบนเปเบเบฑเบเบเบฒเบเบเบธเบเบชเบดเบเบเปเบฒเปเบเบทเปเบญเบชเบฐเปเบเบเบเปเปเบกเบนเบเบเปเบฝเบงเบเบฑเบเบเบธเบเปเบเบเปเบญเบเปเบเบฑเบเบกเปเบฝเบ.
- เปเบเบตเปเบกเบเบฒเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบชเปเบฒเบฅเบฑเบ syntax "use<..>" เปเบ "impl Trait", เปเบเบดเปเบเบเปเบฒเบเบปเบเบเปเปเบกเบนเบเบเปเบฝเบงเบเบฑเบเบเบฐเปเบเบเบเบตเปเปเบเบทเปเบญเบเปเบงเป. เบเบปเบงเบขเปเบฒเบ, "impl Trait + use<'x, T>" เบเปเบฒเบเบปเบเบงเปเบฒเบเบฝเบเปเบเปเบเบฒเบฅเบฒเบกเบดเปเบเบต "x" เปเบฅเบฐ "T" เบญเบฐเบเบธเบเบฒเบเปเบซเปเบเบทเบเบเปเบฒเปเบเปเปเบเบเบฐเปเบเบเบเบตเปเปเบเบทเปเบญเบเปเบงเป.
- syntax เปเบเบเบเปเบฒเบเบซเบฒเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบชเปเบฒเบ pointers เบเบดเบเปเบเปเบเบทเบเบชเบฐเปเบซเบเบต, เปเบเบ macro เบเบตเปเปเบเปเปเบเปเบกเบทเปเบญเบเปเบญเบ: macro "addr_of!(expr)" เปเบเปเบเบทเบเปเบเบเบเบตเปเบเปเบงเบ "&raw const expr", เปเบฅเบฐ "addr_of_mut!(expr)" macro เปเบเปเบเบทเบเปเบเบเบเบตเป. เปเบเบ โ&raw mutโ operator exprโ. struct Packed { not_aligned_field: i32, } fn main() { เปเบซเป p = Packed { not_aligned_field: 1_82 }; // เบงเบดเบเบตเปเบเบปเปเบฒเบชเปเบฒเบเบเบปเบงเบเบตเปเบเบดเบเปเบซเป ptr = std::ptr::addr_of!(p.not_aligned_field); // เบงเบดเบเบตเปเปเปเปเบเบเบฒเบเบชเปเบฒเบเบเบปเบงเบเบตเปเบเบดเบเปเบซเป ptr = &raw const p.not_aligned_field; เปเบซเป val = เบเปเปเบเบญเบเปเบ { ptr.read_unaligned() }; }
- เบกเบฑเบเปเบเบฑเบเปเบเปเบเปเบเบตเปเบเบฐเบเปเบฒเบเบปเบเบซเบเปเบฒเบเบตเปเบเบญเบเปเบเปเบฅเบฐเบเบปเบเบเบตเปเบเปเบงเบ 'static' เบเบฐเบซเบผเบญเบเบเบตเบงเบดเบเบเบฒเบเปเบ extern blocks เบเปเบงเบเบเบธเบเบฅเบฑเบเบชเบฐเบเบฐ "เบเปเปเบเบญเบเปเบ" (เบเปเบญเบเบซเบเปเบฒเบเบตเป, เบญเบปเบเบเบฐเบเบญเบเบเบฑเบเบซเบกเบปเบเปเบ "unsafe extern" เบชเบฒเบกเบฒเบเบกเบตเบเบฝเบเปเบเปเบเบธเบเบฅเบฑเบเบชเบฐเบเบฐ "เบเปเปเบเบญเบเปเบ"): unsafe extern { pub safe static TAU : f64; pub safe fn sqrt(x: f64) -> f64; pub unsafe fn strlen(p: *const u8) -> usize; }
- no_mangle, link_section เปเบฅเบฐ export_name attributes, เปเบเบดเปเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเบชเบนเปเบเบถเบเบเบดเบเปเบฒเบเบตเปเบเปเปเปเบเปเบเปเบฒเบเบปเบ, เบเบญเบเบเบตเปเบเบทเบงเปเบฒเบเปเปเบเบญเบเปเบ เปเบฅเบฐเบเปเบญเบเบเบฒเบเบเบธเบ "เบเปเปเบเบญเบเปเบ" เบขเปเบฒเบเบเบฑเบเปเบเบ, เบเบปเบงเบขเปเบฒเบ: #[unsafe(no_mangle)] pub fn my_global_function() { }
- เบเบฒเบเบเบฑเบเบเบนเปเบฎเบนเบเปเบเบเบญเบฐเบเบธเบเบฒเบเปเบซเปเบเปเบฒเบกเบเบฐเปเบเบเบซเบงเปเบฒเบเปเบเบปเปเบฒเปเบเป, เปเบเบฑเปเบ "enum Void {}" เบซเบผเบทเปเบเบเบชเปเบฒเบเบเบตเปเบกเบตเบเปเบญเบเบซเบงเปเบฒเบเบเบตเปเปเบเบดเปเบเปเบซเบฑเบเปเบเป. เปเบเป std::convert::Infallible; pub fn unwrap_without_panic (x: เบเบปเบเปเบเปเบฎเบฑเบ ) -> T { เปเบซเป Ok(x) = x; // "Err" เบชเบฒเบกเบฒเบเบเปเบฒเบกเปเบเป x }
- เบเบฐเปเบเบเบชเปเบฒเบฅเบฑเบเบเบปเบงเปเบฅเบเบเบธเบเบฅเบญเบ (f32 เปเบฅเบฐ f64) เบกเบตเบเบถเบเบเบดเบเปเบฒเบกเบฒเบเบเบฐเบเบฒเบเปเบเปเบงเบฅเบฒเบเบตเปเบเบฒเบเบเบธเบเปเบเปเบเบเปเบฒ NaN เบเบตเปเบเปเปเปเบกเปเบเบเบปเบงเปเบฅเบ (0.0/0.0), เปเบฅเบฐเบเบฑเบเบญเบฐเบเบธเบเบฒเบเปเบซเปเบเปเบฒเปเบเปเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบธเบเบฅเบญเบเบขเบนเปเปเบ const fn.
- เปเบเปเบเปเบเบเบเบฐเบเบญเบเปเบซเปเบเบงเบฒเบกเบชเบฒเบกเบฒเบเปเบเบเบฒเบเปเบเป operands เบเบตเปเบกเบตเบเบธเบเบฅเบฑเบเบชเบฐเบเบฐ "const" เปเบเบทเปเบญเบเปเบฒเปเบเปเบเปเบฒเบเบปเบงเปเบฅเบ integer เปเบเบเบเบปเบเปเบเบเบเปเปเปเบเปเปเบเบฑเบเปเบงเปเปเบเบเบฐเบเบฝเบ. const MSG: &str = "เบชเบฐเบเบฒเบเบเบต, เปเบฅเบ!\n"; unsafe { core::arch::asm!( โmov rdx, {LEN} // the instruction 'mov rdx, 14โฒโ will be generated, LEN = const MSG.len(), โฆ ); }
- เบเบฒเบเปเบเปเปเบเบเบฒเบเบชเบฐเปเบเบเบญเบญเบเบเปเบงเบเบเบธเบเบฅเบฑเบเบชเบฐเบเบฐ "static" เปเบกเปเบเบญเบฐเบเบธเบเบฒเบเปเบซเปเบขเบนเปเปเบเบชเบฐเบเบฒเบเบเบฒเบเบเบตเปเบเบญเบเปเบเปเบเบเบเปเปเบกเบตเบเบฒเบเบเปเบฒเบเบปเบเบเบฅเบฑเบญเบเบเบตเปเบเปเปเบเบญเบเปเบ (เบเบปเบงเบเบฐเบเบดเบเบฑเบเบเบฒเบ "&raw mut" เปเบฅเบฐ "&raw const" เบเปเปเบกเบตเบเบปเบเบเบฐเบเบปเบเบเปเปเบกเบนเบเบเปเบฒเบเบญเบ operand เปเบฅเบฐเบเบฝเบเปเบเปเบชเปเบฒเบเบเบปเบงเบเบตเปเปเบเบซเบฒเบกเบฑเบ): static mut STATIC_MUT: เบเบฐเปเบเบ = เบเบฐเปเบเบ::new( ); extern "C" { static EXTERN_STATIC: เบเบฐเปเบเบ; } fn main() { เปเบซเป static_mut_ptr = &raw mut STATIC_MUT; เปเบซเป extern_static_ptr = &raw const EXTERN_STATIC; }
- เบเบฒเบเบชเปเบงเบเปเบซเบกเปเบเบญเบ API เปเบเปเบเบทเบเบเปเบฒเบเปเบเบขเบนเปเปเบเบเบฐเปเบเบเบเบญเบเบเบงเบฒเบกเบซเบกเบฑเปเบเบเบปเบ, เบฅเบงเบกเบเบฑเบเบงเบดเบเบตเบเบฒเบเปเบฅเบฐเบเบฒเบเบเบฑเบเบเบฑเปเบเบเบฐเบเบดเบเบฑเบเบฅเบฑเบเบชเบฐเบเบฐเบเปเบฒเบเปเปเบกเปเบเบกเบตเบเบงเบฒเบกเบซเบกเบฑเปเบเบเบปเบ:
- std::thread::Builder::spawn_unchecked
- std::str::CharIndices::offset
- std::option::Option::is_none_or
- [T]::is_sorted
- [T]::is_sorted_by
- [T]::is_sorted_by_key
- Iterator::is_sorted
- Iterator::is_sorted_by
- Iterator::is_sorted_by_key
- std::future::Ready::into_inner
- std::iter::repeat_n
- impl DoubleEndedIterator เบชเปเบฒเบฅเบฑเบ Take
เปเบซเบผเปเบเบเปเปเบกเบนเบ: opennet.ru
