Avatar ·

ما الفرق بين traitين Copy و Clone في Rust؟

مرحبًا بالجميع! أنا مبتدئ في Rust وأحاول فهم إدارة الذاكرة. قرأت عن traitين Copy و Clone، لكني لم أفهم الفرق بينهما تمامًا. في التوثيق مكتوب أن Clone هو "نسخ عميق"، و Copy هو "نسخ بسيط على مستوى البت". لكن عمليًا أرى سلوكًا غريبًا. إليك مثال يربكني: ```rust #[derive(Copy, Clone)] struct Point { x: i32, y: i32, } #[derive(Clone)] struct Line { start: Point, end: Point, } fn main() { let p1 = Point { x: 1, y: 2 }; let p2 = p1; // هل Copy يعمل؟ println!("{:?} {:?}", p1, p2); // يعمل! let l1 = Line { start: Point { x: 0, y: 0 }, end: Point { x: 5, y: 5 } }; let l2 = l1; // خطأ! يحدث move // println!("{:?} {:?}", l1, l2); // لن يتم compile } ``` لماذا يعمل Copy مع Point، ولكن ليس مع Line، رغم أن Line تستخدم Point مع Copy داخليًا؟ كيف أختار بشكل صحيح بين Copy و Clone؟

لا توجد إجابات بعد.

تسجيل الدخول لترك إجابة

المدونات