Avatar ·

لماذا تُمنع هياكل البيانات التكرارية في Rust وكيفية إنشائها بشكل صحيح؟

مرحبًا أيها الزملاء! لقد بدأت في تعلم Rust وواجهت خطأً غير مفهوم. أريد إنشاء قائمة مرتبطة بسيطة، كما في C أو Python: ```rust struct Node { value: i32, next: Node, // خطأ: recursive type `Node` has infinite size } ``` يقول المترجم: "recursive type `Node` has infinite size". أفهم أن Rust صارم بشأن أحجام الأنواع، لكن لماذا هذه مشكلة؟ في C يمكنني عمل `struct Node { int value; struct Node* next; }` — هناك مؤشر، وكل شيء يعمل. في Python يمكنني تخزين الكائن داخل نفسه. لماذا يمنع Rust هذا التكرار؟ وكيف يمكنني إنشاء القوائم والأشجار وغيرها من الهياكل التكرارية؟ سمعت عن `Box`، لكنني لا أفهم لماذا يحل المشكلة. اشرحوا لي، من فضلكم، بكلمات بسيطة مع أمثلة. شكرًا مقدمًا! <<>>

بـ