Skip to content

Latest commit

 

History

History
116 lines (90 loc) · 8.96 KB

File metadata and controls

116 lines (90 loc) · 8.96 KB

Learn Rust From Python — Table of Contents

TOC · Next

Keywords: ownership, error handling, collections, tooling, playbook, macros, production hygiene

อ่านแบบคน Python:

  • ถ้าอยากเอา “ภาพรวม” ก่อน: อ่านโหมด A/B/C แล้วเลือกเส้นทาง
  • ถ้าอยาก “ลงมือทำ”: เปิด 01-start-basic.md แล้วไล่ต่อด้วย Prev/Next
  • ถ้าติดระหว่างทาง: เปิด 12-learning-playbook.md

ชุดเอกสารนี้เน้น “เรียน Rust จากวิธีคิด Python” โดยยึดตัวอย่างเปรียบเทียบ Python ↔ Rust เป็นหลัก

สิ่งที่ตั้งใจให้คุณได้ (แบบเอาไปใช้ได้จริง):

  • ออกแบบโปรแกรมแบบ Rust ได้: owner/borrow/error path ชัด
  • อ่าน compiler error แล้วแก้ได้เป็นขั้นตอน (ไม่เดา)
  • แปลง data model จาก dict/list ไปเป็น struct/Vec/HashMap แบบไม่ปวด
  • วางโครงโปรเจกต์ + workflow ให้ทำงานจริงได้ (cargo check/fmt/clippy/test)

วิธีใช้เอกสาร (แนะนำ)

อ่านตามลำดับเลขไฟล์ (00 → 18) จะต่อเนื่องที่สุด เพราะบทถูกเรียงตาม “ลำดับที่สมองคนมาจาก Python มักสะดุด”

ถ้าอยากอ่านแบบมีเป้าหมาย ให้ใช้ 3 โหมดนี้:

โหมด A: ปูพื้นให้เขียน Rust ได้เร็ว (แนะนำสำหรับมือใหม่)

  • 01-start-basic.md
  • 02-ownership-and-borrowing.md
  • 03-error-handling.md
  • 04-collections-and-data-modeling.md

เหตุผล: 4 บทนี้คือแกนที่ทำให้คุณ “คุมข้อมูล + คุม error + คุมรูปทรงข้อมูล” ได้ก่อน แล้วค่อยต่อยอด

โหมด B: ทำงานจริงแบบโปรเจกต์เล็ก (เน้นใช้งาน)

  • 05-modules-project-structure.md
  • 06-tooling-and-workflow.md
  • 10-cli-basics.md
  • 09-config-and-serde-json.md

เหตุผล: ได้โครงโปรเจกต์ + วงจรพัฒนา + CLI + config ซึ่งเป็นสนามฝึกที่ปลอดภัยและใกล้งานจริง

โหมด C: สะสมทักษะต่อเนื่อง (แก้ตอนสะดุด)

  • 12-learning-playbook.md — เปิดทันทีเมื่อเจอ borrow checker/compile error แล้วไม่รู้เริ่มตรงไหน
  • 11-mini-projects.md — ฝึกแบบ “หนึ่งโปรเจกต์ = หนึ่ง crate” เพื่อให้ลองเต็มที่และไม่พังของเดิม

สัญลักษณ์/รูปแบบที่ใช้

  • Output (example) คือ output ตัวอย่างเพื่อให้เห็นภาพ (ของจริงอาจต่างเล็กน้อยตาม environment/เวอร์ชัน)
  • (no output — ...) หมายถึง snippet นั้นเป็นแค่การประกาศ/นิยาม/assign ยังไม่ได้รัน logic ที่พิมพ์อะไร
  • แนวคิด: คือข้อสรุปเชิงความเข้าใจเพื่อให้เห็นภาพรวม
  • แนวทาง: คือข้อแนะนำเชิงปฏิบัติเพื่อช่วยตัดสินใจเร็ว — ไม่ใช่กฎตายตัว 100%

Chapters (01 → 19)

Keyword Index

ใช้เป็น “คีย์เวิร์ดนำทาง” ข้ามบท: กดคำแล้วกระโดดไปบทที่อธิบายเรื่องนั้นเป็นหลัก

Core language

  • ownership — owner / move / drop
  • borrowing&T / &mut T
  • lifetimes — ความสัมพันธ์ของ reference
  • macrosprintln!, vec!, format!, macro_rules!

Correctness

Data & modeling

  • collectionsVec, HashMap, struct modeling
  • config — I/O → JSON → schema → semantics
  • serde — default/rename/strictness (deny_unknown_fields)

Project & workflow

  • modules — crate/mod, lib+bin boundary
  • toolingcargo check/fmt/clippy/test
  • CLI — args → command enum → execute

Concurrency & ops

  • concurrencyArc, Mutex, RwLock, background tasks & lifecycle
  • logging — event → formatter → sink, context (request_id/job_id)

Production hygiene

Functional style

References