Skip to content
เข้าสู่ระบบ

Clone & Copy - คัดลอกค่า

Clone และ Copy คือ traits สำหรับคัดลอกค่า แต่ทำงานต่างกัน! เข้าใจสองตัวนี้สำคัญมากสำหรับ ownership system ของ Rust

Traitวิธีคัดลอกต้องเรียกราคา
Copyคัดลอกอัตโนมัติ (bitwise)ไม่ต้องถูก
Cloneคัดลอกแบบ explicitต้องเรียก .clone()อาจแพง
fn main() {
// ============================================
// Copy: ถูกมาก แค่ copy bits
// ============================================
let a: i32 = 42;
let b = a; // Copy! แค่ copy 4 bytes
println!("a: {}, b: {}", a, b); // ใช้ได้ทั้งคู่
// ============================================
// Clone: อาจแพง ต้อง allocate memory
// ============================================
let s1 = String::from("hello");
let s2 = s1.clone(); // Clone! ต้อง allocate memory ใหม่บน heap
println!("s1: {}, s2: {}", s1, s2);
// ============================================
// ถ้า String เป็น Copy จะมีปัญหา:
// ============================================
// let s3 = s1; // ถ้า auto-copy จะ allocate บ่อยเกินไป!
// Rust เลือกให้ move แทน เพื่อให้ programmer ตัดสินใจ
}

เข้าสู่ระบบเพื่อดูเนื้อหาเต็ม

ยืนยันตัวตนด้วยบัญชี Google เพื่อปลดล็อกบทความทั้งหมด