لماذا تُمنع هياكل البيانات التكرارية في 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`، لكنني لا أفهم لماذا يحل المشكلة. اشرحوا لي، من فضلكم، بكلمات بسيطة مع أمثلة. شكرًا مقدمًا!
<<>>