เบเบฒเบเบเบฑเบเบเบฒเบเบเบงเบฒเบกเบเบปเบเบเปเบฒเบญเบฑเบเบเบฐเปเบเบกเบฑเบเบเบญเบ Rust เบเบปเบเบเปเบญเบเบเบฑเบเบเบฑเบเบเบฐเบเบฒเบเบฒเบเบเบฒเบเบซเบกเบนเบเปเบเปเบเบปเบงเบเบตเป เปเบฅเบฐเบเบปเบเบเปเบญเบเบเบฑเบเบซเบฒเบเบตเปเปเบเบตเบเบเบฒเบเบเบฒเบเบซเบกเบนเบเปเบเปเบเบงเบฒเบกเบเบปเบเบเบณเบฅเบฐเบเบฑเบเบเปเปเบฒ เปเบเบฑเปเบ: เบเบฒเบเปเบเบปเปเบฒเปเบเบดเบเปเปเบงเบเบเบงเบฒเบกเบเบณเบเบฒเบเบซเบผเบฑเบเบเบตเปเบเปเปเปเบชเบเบเปเบฒ, เบเบฒเบเบญเปเบฒเบเบญเบตเบเบเบปเบงเบเบตเป null, buffer overruns, เปเบฅเบฐเบญเบทเปเบเป. เบเบนเปเบเบฑเบเบเบฒเบเบเบธเบเบเปเบฒเบฅเบฑเบเบเบทเบเบเบฑเบเบเบฐเบเบฒเปเบเบทเปเบญเปเบเบเบขเบฒเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบ, เบฎเบฑเบเบเบฐเบเบฑเบเบเบฒเบเบเบฐเบเบญเบเปเบฅเบฐเบเบฒเบเบเบธเปเบกเบเบญเบเบเบฒเบเปเบเบดเปเบเบเบฒเบญเบฒเปเบชเปเบเบเปเบเบเบเบฒเบ.
เบเบปเปเบโเบเป
- ะกัะฐะฑะธะปะธะทะธัะพะฒะฐะฝ ัะธะฟะฐะถ (trait)
เปเบเบญเบฐเบเบฒเบเบปเบ , ะบะพัะพััะน ะฟัะตะดััะฐะฒะปัะตั ะทะฝะฐัะตะฝะธะต, ะฒััะธัะปะตะฝะธะต ะบะพัะพัะพะณะพ ะฒะพะทะผะพะถะฝะพ ะตัั ะฝะต ะทะฐะฒะตััะตะฝะพ ะฒ ะฟัะพัะตััะต ะธัะฟะพะปัะทะพะฒะฐะฝะธั ะฑะปะพะบะพะฒ async / .await. ะะฟัะตะดะตะปัะตะผัะต ะฟัะธ ะฟะพะผะพัะธ Future ะฐัะธะฝั ัะพะฝะฝัะต ะทะฝะฐัะตะฝะธั ะดะฐัั ะฒะพะทะผะพะถะฝะพััั ะฟัะพะดะพะปะถะธัั ะฒัะฟะพะปะฝะตะฝะธะต ะฒ ะฟะพัะพะบะต ะฟะพะปะตะทะฝะพะน ัะฐะฑะพัั, ะฟะพะฟััะฝะพ ะพะถะธะดะฐั ะทะฐะฒะตััะตะฝะธั ะฒััะธัะปะตะฝะธะน ะพะฟัะตะดะตะปัะฝะฝะพะณะพ ะทะฝะฐัะตะฝะธั; - ะกัะฐะฑะธะปะธะทะธัะพะฒะฐะฝะฐ ะฑะธะฑะปะธะพัะตะบะฐ
เบเบฑเบเบชเบฑเบ , ะฟัะตะดะพััะฐะฒะปัััะฐั ัะผะฝัะต ัะบะฐะทะฐัะตะปะธ ะธ ะบะพะปะปะตะบัะธะธ ะดะปั ัะฟัะฐะฒะปะตะฝะธั ัะฐะทะผะตัะฐะตะผัะผะธ ะฒ ะฟะฐะผััะธ ะทะฝะฐัะตะฝะธัะผะธ. ะะปั ะฒัะดะตะปะตะฝะธั ะฟะฐะผััะธ ะฒ std ัะตะฟะตัั ะฟัะธะผะตะฝัะตััั ัะธะฟเบชเบดเปเบเปเบถเปเบ , ะบะพัะพััะน ัะตัะบัะฟะพััะธัััััั ะธะท alloc. ะัะดะตะปัะฝะพะต ะธัะฟะพะปัะทะพะฒะฐะฝะธะต alloc ะธะผะตะตั ัะผััะป ะฒ ะฟัะธะปะพะถะตะฝะธัั ะฝะต ะฟัะธะฒัะทะฐะฝะฝัั ะบ std (ยซ#![no_std]ยป), ะฐ ัะฐะบะถะต ะฒ ะฑะธะฑะปะธะพัะตะบะฐั , ัะฐัััะธัะฐะฝะฝัั ะฝะฐ ะฟัะธะผะตะฝะตะฝะธะต ะฒ ะฟะพะดะพะฑะฝัั ะฟัะพะณัะฐะผะผะฐั ะฑะตะท std; - ะะปั ะพะฑั
ะพะดะฐ ะฟัะพะฒะตัะพะบ ะบะพััะตะบัะฝะพะน ะธะฝะธัะธะฐะปะธะทะฐัะธะธ ะทะฝะฐัะตะฝะธะน
เบชเบฐเปเปเบต ะฟัะพะผะตะถััะพัะฝัะน ัะธะฟเบเบฒเบเบเบตเปเปเบงเบ , ะบะพัะพััะน ะผะพะถะฝะพ ะธัะฟะพะปัะทะพะฒะฐัั ะฒะผะตััะพ ััะฝะบัะธะธ mem::uninitialized, ะฒ ะบะฐัะตััะฒะต ะตั ะฑะพะปะตะต ะฑะตะทะพะฟะฐัะฝะพะน ะฐะปััะตัะฝะฐัะธะฒั. ะคัะฝะบัะธั mem::uninitialized ัะดะพะฑะฝะฐ ะดะปั ะฑััััะพะณะพ ัะพะทะดะฐะฝะธั ะผะฐััะธะฒะพะฒ, ะฝะพ ะฒะฒะพะดะธั ะบะพะผะฟะธะปััะพั ะฒ ะทะฐะฑะปัะถะดะตะฝะธะต, ัะฐะบ ะบะฐะบ ัะพะทะดะฐัั ะฒะธะดะธะผะพััั ะฒัะฟะพะปะฝะตะฝะธั ะธะฝะธัะธะฐะปะธะทะฐัะธะธ, ะฝะพ ะฒ ะดะตะนััะฒะธัะตะปัะฝะพััะธ ะทะฝะฐัะตะฝะธะต ะพััะฐัััั ะฝะตะธะฝะธัะธะฐะปะธะทะธัะพะฒะฐะฝะฝัะผ. MaybeUninit ะฟะพะทะฒะพะปัะตั ัะฒะฝะพ ัะบะฐะทะฐัั ะบะพะผะฟะธะปััะพัั, ััะพ ะทะฝะฐัะตะฝะธะต ะฝะตะธะฝะธัะธะฐะปะธะทะธัะพะฒะฐะฝะพ, ััะตััั ัะฒัะทะฐะฝะฝะพะต ั ััะธะผ ะฒะพะทะผะพะถะฝะพะต ะฝะตะพะฟัะตะดะตะปัะฝะฝะพะต ะฟะพะฒะตะดะตะฝะธะต, ะฐ ัะฐะบะถะต ะฒ ะฟัะพะณัะฐะผะผะฐั ะพัะณะฐะฝะธะทะพะฒะฐัั ะฟัะพะฒะตัะบั ัะตัะตะท ยซmaybe_t:ยป ะธ ะฟะพััะฐะฟะฝัั ะธะฝะธัะธะฐะปะธะทะฐัะธั ั ะฟะพะผะตัะบะพะน ะตั ะทะฐะฒะตััะตะฝะธั ะฟัะธ ะฟะพะผะพัะธ ะฒัะทะพะฒะฐ ยซ.assume_init()ยป. ะก ะฟะพัะฒะปะตะฝะธะตะผ MaybeUninit ััะฝะบัะธั mem::uninitialized ะฟะตัะตะฒะตะดะตะฝะฐ ะฒ ัะฐะทััะด ัััะฐัะตะฒัะธั ะธ ะฝะต ัะตะบะพะผะตะฝะดะพะฒะฐะฝะฐ ะบ ะธัะฟะพะปัะทะพะฒะฐะฝะธั; - ะขะตั ะฝะธะบะฐ NLL (Non-Lexical Lifetimes), ัะฐััะธัะธะฒัะฐั ัะธััะตะผั ััััะฐ ะฒัะตะผะตะฝะธ ะถะธะทะฝะธ ะทะฐะธะผััะฒะพะฒะฐะฝะฝัั ะฟะตัะตะผะตะฝะฝัั , ััะฐะฑะธะปะธะทะธัะพะฒะฐะฝะฐ ะดะปั ัะทัะบะฐ Rust 2015 (ะธะทะฝะฐัะฐะปัะฝะพ NLL ะฟะพะดะดะตัะถะธะฒะฐะปัั ัะพะปัะบะพ Rust 2018). ะะผะตััะพ ะฟัะธะฒัะทะบะธ ะฒัะตะผะตะฝะธ ะถะธะทะฝะธ ะฝะฐ ะปะตะบัะธัะตัะบะพะผ ััะพะฒะฝะต, NLL ะพัััะตััะฒะปัะตั ัััั ะฝะฐ ััะพะฒะฝะต ะฝะฐะฑะพัะฐ ัะบะฐะทะฐัะตะปะตะน ะฒ ะณัะฐัะต ะฟะพัะพะบะฐ ะฒัะฟะพะปะฝะตะฝะธั. ะะพะดะพะฑะฝัะน ะฟะพะดั ะพะด ะฟะพะทะฒะพะปัะตั ัะฒะตะปะธัะธัั ะบะฐัะตััะฒะพ ะฟัะพะฒะตัะบะธ ะทะฐะธะผััะฒะพะฒะฐะฝะธั ะฟะตัะตะผะตะฝะฝัั (borrow checker) ะธ ะดะพะฟัััะธัั ะฒัะฟะพะปะฝะตะฝะธะต ะฝะตะบะพัะพััั ะฒะธะดะพะฒ ะบะพััะตะบัะฝะพะณะพ ะบะพะดะฐ, ะธัะฟะพะปัะทะพะฒะฐะฝะธะต ะบะพัะพัะพะณะพ ัะฐะฝะตะต ะฟัะธะฒะพะดะธะปะพ ะบ ะฒัะฒะพะดั ะพัะธะฑะบะธ. ะะพะฒะพะต ะฟะพะฒะตะดะตะฝะธะต ัะฐะบะถะต ัััะตััะฒะตะฝะฝะพ ัะฟัะพัะฐะตั ะพัะปะฐะดะบั;
- ะะบะปััะตะฝะฐ ะฝะพะฒะฐั ัะตะฐะปะธะทะฐัะธั ะฐััะพัะธะฐัะธะฒะฝัั
ะผะฐััะธะฒะพะฒ
HashMap , ะพัะฝะพะฒะฐะฝะฝะฐั ะฝะฐ ะฟัะธะผะตะฝะตะฝะธะธ ััััะบััััSwiss Table (ะฐะฒัะพะผะฐัะธัะตัะบะธ ะทะฐะณััะถะฐะตัััhashbrown::HashMap , ะตัะปะธ ัะฒะฝะพ ะฝะต ัะบะฐะทะฐะฝะพ ะธะฝะพะต, ะฝะฐะฟัะธะผะตั, std::HashMap, ะบะพัะพััะน ะพัะฝะพะฒะฐะฝ ะฝะฐ SipHash 1-3). ะัะพะณัะฐะผะผะฝัะน ะธะฝัะตััะตะนั ะพััะฐะปัั ะฟัะตะถะฝะธะผ, ะฐ ะทะฐะผะตัะฝัะต ัะฐะทัะฐะฑะพััะธะบั ะพัะปะธัะธั ัะฒะพะดัััั ะบ ัะฒะตะปะธัะตะฝะธั ะฟัะพะธะทะฒะพะดะธัะตะปัะฝะพััะธ ะธ ัะฝะธะถะตะฝะธั ะฟะพััะตะฑะปะตะฝะธั ะฟะฐะผััะธ; - ะ ะฟะฐะบะตัะฝัะน ะผะตะฝะตะดะถะตั cargo
เปเบเบตเปเบก ะพะฟัะธั ยซโofflineยป, ะฒะบะปััะฐััะฐั ัะตะถะธะผ ัะฐะฑะพัั ะฑะตะท ะพะฑัะฐัะตะฝะธั ะฟะพ ัะตัะธ, ะฟัะธ ะบะพัะพัะพะผ ะฟัะธ ัััะฐะฝะพะฒะบะต ะทะฐะฒะธัะธะผะพััะตะน ะธัะฟะพะปัะทััััั ัะพะปัะบะพ ะฟัะพะบััะธัะพะฒะฐะฝะฝัะต ะฒ ะปะพะบะฐะปัะฝะพะน ัะธััะตะผะต ะฟะฐะบะตัั. ะัะปะธ ะทะฐะฒะธัะธะผะพััั ะพััััััะฒัะตั ะฒ ะปะพะบะฐะปัะฝะพะผ ะบััะต, ัะพ ะฑัะดะตั ะฒัะฒะตะดะตะฝะฐ ะพัะธะฑะบะฐ. ะะปั ะฟัะตะดะฒะฐัะธัะตะปัะฝะพะน ะทะฐะณััะทะบะธ ะทะฐะฒะธัะธะผะพััะตะน ะฒ ะปะพะบะฐะปัะฝัะน ะบัั ะฟะตัะตะด ะฟะตัะตั ะพะดะพะผ ะฒ offline ะผะพะถะฝะพ ะธัะฟะพะปัะทะพะฒะฐัั ะบะพะผะฐะฝะดั ยซcargo fetchยป; - ะ ะตะฐะปะธะทะพะฒะฐะฝะฐ ะฒะพะทะผะพะถะฝะพััั ะฒัะทะพะฒะฐ ะผะฐะบัะพัะฐ ยซdbg!ยป ั ัะบะฐะทะฐะฝะธะตะผ ะฝะตัะบะพะปัะบะธั ะฐัะณัะผะตะฝัะพะฒ;
- ะัะธะทะฝะฐะบ ยซconstยป, ะพะฟัะตะดะตะปัััะธะน ะฒะพะทะผะพะถะฝะพััั ะธัะฟะพะปัะทะพะฒะฐะฝะธั ะฒ ะปัะฑะพะผ ะบะพะฝัะตะบััะต ะฒะผะตััะพ ะบะพะฝััะฐะฝั, ะฟัะธะผะตะฝัะฝ ะดะปั ะผะตัะพะดะพะฒ
Layout::from_size_align_unchecked,
mem::needs_drop,
NonNull::dangling ะธ
NonNull::cast; - เบชเปเบงเบเปเบซเบกเปเบเบญเบ APIs เปเบเปเบเบทเบเปเบญเบเปเบเบซเบฒเบเบฐเปเบเบเบเบตเปเบซเบกเบฑเปเบเบเบปเบ, เบฅเบงเบกเบเบฑเบเบงเบดเบเบตเบเบฒเบเบเบตเปเบกเบตเบเบงเบฒเบกเบซเบกเบฑเปเบเบเบปเบ
task::Waker, task::Poll,
VecDeque::rotate_left, VecDeque::rotate_right,
Read::read_vectored, Write::write_vectored,
Iterator::copied,
BorrowMut (ะดะปั ัััะพะบ) ะธ str::as_mut_ptr.
เปเบซเบผเปเบเบเปเปเบกเบนเบ: opennet.ru