Tag: rust
33 รายการ
Blog

Infinity ให้ AI พักระหว่างรองาน อ้างเก็บ 75,000 เอเจนต์ในแรม 8 GB
AWS เปิดตัว Infinity เครื่องมือให้เอเจนต์พักระหว่างรอผล ลดการจับจองทรัพยากร มาดูเงื่อนไขตัวเลข ความเสี่ยง และสิ่งที่ทีมไทยควรวัดก่อนใช้จริง
Rust Option::as_deref: อ่าน String แบบ &str โดยไม่ย้ายเจ้าของ
ใช้ Option::as_deref ตรวจและ normalize config แบบยืมค่าเดิม พร้อมตัวอย่าง Rust ที่ยืนยันว่า String ยังใช้งานต่อได้
Rust Iterator::is_sorted_by_key: ตรวจลำดับโดยไม่สร้าง Vec สำรอง
ตรวจ stream ว่าเรียงตาม priority หรือไม่ด้วย is_sorted_by_key พร้อม Cargo test และข้อควรระวังเรื่อง key
Rust Option::zip: รวมค่าที่ต้องมาคู่กันโดยไม่ซ่อนสถานะขาดครึ่ง
ใช้ Option::zip รวม start/end ที่ต้องมีพร้อมกัน แยก missing ออกจาก invalid และทดสอบด้วย Cargo offline
Rust slice::split_off: หยิบช่วงออกจากมุมมองโดยไม่ allocate
ใช้ split_off กับ &mut &[T] เพื่อเลื่อน cursor ของ slice อย่างปลอดภัย พร้อมแยกจาก Vec::split_off และจัดการ out-of-bounds
Rust Vec::spare_capacity_mut: เติม buffer ที่จองไว้โดยไม่สร้าง Vec ชั่วคราว
เรียนรู้ MaybeUninit, set_len invariant และ panic boundary ผ่านตัวอย่างเติมข้อมูลที่ทดสอบจริง
Rust slice::as_chunks: แบ่ง slice เป็นกลุ่มขนาดคงที่โดยไม่ copy
ใช้ as_chunks แปลง slice เป็น array chunks กับ remainder พร้อมทดสอบขอบเขตและอธิบายว่าทำไมขนาดศูนย์จึง panic
Rust VecDeque::pop_front_if: หยิบหัวคิวเฉพาะเมื่อพร้อม
ใช้ pop_front_if ตรวจและนำสมาชิกหน้าคิวออกแบบ atomic ต่อการยืม พร้อมเข้าใจ mutation ใน predicate และทางเลือกเมื่อเงื่อนไขล้ม
Rust Vec::extract_if: ดึงสมาชิกออกเฉพาะช่วงโดยยังเก็บลำดับที่เหลือ
ใช้ Vec::extract_if แยกสมาชิกที่ผ่านเงื่อนไขจาก range พร้อมเข้าใจ lazy iterator, early drop และต้นทุนการเลื่อนข้อมูล
Rust VecDeque::make_contiguous: เปิด ring buffer เป็น slice ก่อน sort
ทำให้ข้อมูลใน VecDeque ต่อเนื่องในหน่วยความจำเพื่อ sort หรือส่งต่อ API ที่รับ slice พร้อมเข้าใจต้นทุนการย้าย
Rust Iterator::scan: พก state ไปทีละรายการโดยไม่หลุดจาก pipeline
ใช้ scan สร้าง running state ใน iterator พร้อมอธิบายจังหวะหยุด, ownership และกรณีที่ loop ชัดกว่า
Rust try_fold: สะสมค่าแล้วหยุดทันทีเมื่อเจอเงื่อนไขผิด
ใช้ Iterator::try_fold รวมข้อมูลพร้อมส่ง error ออกจากลูปเร็ว โดยไม่ต้องเขียน mutable accumulator เอง
Rust Option::take_if: ย้ายค่าออกเมื่อเงื่อนไขผ่าน โดยไม่ชน borrow
ใช้ take_if ตรวจและย้ายค่าจาก Option อย่างเป็นอะตอม พร้อมเทียบกับ take และ as_ref
Rust partition_point: หาเส้นแบ่งใน slice ที่เรียงตามเงื่อนไข
ใช้ binary search หา index แรกที่ predicate เปลี่ยนจากจริงเป็นเท็จ พร้อม edge cases และ test ที่รันจริง
Rust slice::chunk_by: แบ่งข้อมูลติดกันตามกติกาโดยไม่ copy
ใช้ chunk_by มอง slice เป็นช่วงต่อเนื่องตาม predicate พร้อมทดสอบ empty input, ศูนย์ และเส้นแบ่งกลุ่ม
Rust core::range::Range: เก็บ span แบบ Copy โดยไม่ให้ range เป็น iterator
ใช้ range ชุดใหม่ของ Rust แยกข้อมูลช่วงออกจากสถานะ iteration พร้อมข้อควรระวังเรื่อง syntax เดิม
Rust Vec::retain_mut: แก้ค่าและกรองสมาชิกในรอบเดียวโดยรักษาลำดับ
ใช้ retain_mut ทำ normalization ก่อนตัดค่าที่ไม่ผ่าน พร้อมเข้าใจ ownership, panic และต้นทุนการเลื่อนข้อมูล
Rust array::from_fn: สร้าง array ของค่าที่ไม่ใช่ Copy ทีละช่อง
ใช้ closure ที่รับ index สร้าง fixed array พร้อมทดสอบลำดับและกรณี array ว่าง
Rust HashMap::get_disjoint_mut: แก้หลายค่าใน Map โดยไม่ชนกฎ Borrow
ใช้ get_disjoint_mut ยืมค่าหลาย key พร้อมกันอย่างปลอดภัย พร้อมเข้าใจ duplicate key, key ที่หาย และต้นทุนตรวจความซ้ำ
Rust Result.inspect_err: สังเกต error โดยไม่ทำลายเส้นทางส่งต่อ
เพิ่ม logging หรือ metrics ให้ Result ด้วย inspect_err พร้อมแยก observation ออกจาก recovery และการเปลี่ยนชนิด error
Rust Option::is_none_or: เขียนกฎ ‘ไม่มีก็ได้ มีก็ต้องผ่าน’ ให้ตรงความหมาย
ลดเงื่อนไข Option ที่ซ้อนกันด้วย is_none_or พร้อมแยกกรณี optional configuration จาก validation ที่บังคับมีค่า
Rust map_while: แปลงข้อมูลจนเจอเส้นแบ่ง แล้วหยุดอย่างมีขอบเขต
ใช้ Iterator::map_while อ่าน prefix ที่แปลงได้ พร้อมอธิบายว่า item ที่ทำให้หยุดถูก consume และ iterator ไม่ fused
ผลสำรวจ Debugging Rust 2026: ปัญหาไม่ใช่แค่เครื่องมือ แต่คือข้อมูลที่ดีบักเกอร์มองไม่เห็น
อ่านผลสำรวจ Rust ทางการกว่า 2,300 คน แล้วแปลงเป็น checklist ปรับ workflow ดีบักของทีม
Rust std::mem::take: ย้ายค่าออกจาก Borrow โดยไม่ Clone
ใช้ mem::take เปลี่ยน field เป็นค่า Default แล้วรับ ownership ของค่าเดิม เหมาะกับ state machine และ batch drain ที่ไม่อยากคัดลอก
Rust 1.98: substr_range คืนช่วง byte ของ slice โดยไม่ค้นซ้ำ
ทำความเข้าใจ str::substr_range สำหรับเชื่อม string slice กลับสู่ตำแหน่งต้นฉบับ พร้อมข้อจำกัดเรื่อง provenance และ UTF-8
Rust 1.98 format_into: แปลงเลขเป็นข้อความโดยไม่ดึง crate เพิ่ม
รู้จัก NumBuffer และ format_into สำหรับ hot path พร้อมเหตุผลที่ไม่ควรแทน format! ทุกจุด

Bun 1.4: รันไทม์ที่เขียนใหม่จาก Zig เป็น Rust
สรุปจากบล็อกทางการ Bun v1.4 ว่ามีการ rewrite เป็น Rust พร้อมไฮไลต์เรื่องความเข้ากันได้กับ Node และประสิทธิภาพ
Rust 1.98.1 อุด Miscompilation ใน Vtable: อัปเดตก่อนส่ง Trait Object ขึ้น Production
Rust 1.98.1 แก้กรณี rustc สร้าง vtable ที่มี null แทน function pointer พร้อมแนวทางประเมินและ rollout toolchain patch
rustup 1.29.1: ติดตั้ง component ขนานขึ้น และหยุดลง toolchain โดยไม่ตั้งใจ
สรุป rustup 1.29.1 ตั้งแต่ parallel install, doc server ถึงพฤติกรรม implicit install ที่กำลังถูกเลิกใช้
Rust 1.98 เปิดทางคำนวณ Float แบบ Algebraic: เร็วขึ้นได้ แต่คำตอบอาจขยับ
เข้าใจเมธอด algebraic_* ใหม่ของ Rust 1.98 ว่าแลกความคงที่ของเลขทศนิยมกับโอกาส vectorize อย่างไร และงานแบบไหนไม่ควรใช้

arrayref ถูกแทรก Dependency อันตราย: เช็ก Rust Supply Chain อย่างไรไม่ให้ตื่นตูม
สรุปเหตุโจมตี crates.io วันที่ 20 สิงหาคม 2026 พร้อมตัวอย่าง Rust ที่ทดสอบจริงเพื่อสแกน Cargo.lock และแผนรับมือแบบมีขอบเขต

Rust ลด RAM ให้ DNS Cache: บทเรียนจาก 250,000 ล้านรายการของ Cloudflare
แกะ 5 แนวคิดลด memory footprint จากระบบ DNS ของ Cloudflare พร้อมตัวอย่าง Rust ที่ทดสอบจริงว่าโครงสร้างแบบ growable กับ frozen layout ต่างกันอย่างไร
คู่มือติดตั้ง Rust ฉบับเข้าใจง่าย
เรียนรู้วิธีติดตั้ง Rust และ Cargo บน Windows, macOS และ Linux แบบละเอียด พร้อมเคล็ดลับการตั้งค่า toolchain สำหรับมือใหม่