Tour of Rust Table of Contents

เพื่อนที่คุ้นเคย

คราวนี้เรามาพิจารณา smart pointers ที่เราเคยเห็นมาแล้วเช่น Vec<T> และ String

Vec<T> คือ smart pointer ที่ครอบครองพื้นที่ไบต์บางส่วนในหน่วยความจำ โดยที่คอมไพเลอร์ของ Rust ไม่รู้เลยว่า ไบต์พวกนั้นคืออะไร smart pointer จะแปลสิ่งนั้นว่ามันหมายถึงอะไรเพื่อจะได้หยิบมันมาจากหน่วยความจำ เพื่อมาจัดการด้วยการตามดูว่า โครงสร้างข้อมูลนั้นมีจุดเริ่มต้นและสิ้นสุดอยู่ที่ไหน จนพบ โครงสร้างข้อมูลตัวจริงที่ raw pointer ที่ชี้ไปถึง และนำมาจัดหน้าตาให้ดูดีใช้งานง่าย ตามอินเตอร์เฟสในที่สุด (ตัวอย่างเช่น my_vec[3])

ในทำนองเดียวกัน String ก็จะตามดูไบต์ในหน่วยความจำ และใช้กระบวนการทางโปรแกรมบังคับให้สิ่งที่เขียนไว้ในนั้นอยู่ในรูปแบบ utf-8 ที่ถูกต้อง จะได้ dereference ของในหน่วยความจำนั้นผ่าน type &str

โครงสร้างข้อมูลทั้งสองตัวนี้ใช้ unsafe ทำงานเพื่อเข้าไปจัดการกับ raw pointers

รายละเอียดหน่วยความจำ: