Strings Deep Dive
ใครที่มาจากภาษาอื่นอาจจะงงว่า “ทำไม Rust มี String หลายแบบจังวะ?” วันนี้เรามาเคลียร์ใจกับ 2 ตัวหลักที่เราเจอบ่อยที่สุดก่อนครับ คือ String และ &str ซึ่งเป็นพื้นฐานสำคัญมากสำหรับการเขียน Rust อย่างถูกต้อง
ทำความเข้าใจ String กับ &str แบบง่ายๆ
Section titled “ทำความเข้าใจ String กับ &str แบบง่ายๆ”ลองนึกภาพแบบนี้ครับ:
- String เหมือน “เจ้าของบ้าน” ที่มีบ้านเป็นของตัวเอง สามารถต่อเติม รีโนเวทได้
- &str เหมือน “แขกที่มาเยี่ยม” แค่มาดู มาใช้ แต่แก้ไขอะไรไม่ได้
ความแตกต่างหลักระหว่าง String และ &str
Section titled “ความแตกต่างหลักระหว่าง String และ &str”| คุณสมบัติ | String (เจ้าของ) | &str (คนยืม) |
|---|---|---|
| Ownership | เป็นเจ้าของข้อมูล ดูแลเองทั้งหมด | แค่ยืมมาอ้างอิง ไม่ได้เป็นเจ้าของ |
| เก็บที่ไหน | Heap - หน่วยความจำแบบ dynamic | ชี้ไปที่ไหนก็ได้ (Heap หรือ Static) |
| แก้ไขได้ไหม | ได้ ทั้งเพิ่ม ลบ แก้ไข | ไม่ได้ อ่านอย่างเดียว |
| ใช้เมื่อไหร่ | ต้องเก็บถาวร, ต้องแก้ไข | รับ parameter, string literal |
| ขนาด Memory | 3 words (ptr, len, capacity) | 2 words (ptr, len) |
| Drop เมื่อไหร่ | เมื่อ owner หมด scope | ไม่ drop เพราะไม่ได้เป็นเจ้าของ |
เข้าสู่ระบบเพื่อดูเนื้อหาเต็ม
ยืนยันตัวตนด้วยบัญชี Google เพื่อปลดล็อกบทความทั้งหมด
Login with Google