فلو فيه inheritance مثلا في rust هيبقى فيه multiple references سواء في الsuper أو الsubclasses و دا هيصعب فكرة الownership و ممكن يسبب مشاكل كمان زي مين هيبقى المسؤول عن ملكية الsubclasses مثلا و حاجات تانية كتير جدا
الخلاصة إن السبب الاساسي هو الmemory safety اللي هو أهم ميزة في rust
فيه بدائل كتيرة للclasses زي ال struct و الmodules
و فيه مفاهيم oop متحققة في rust زي الpolymorphism عن طريق الtraits
و الencapsulation عن طريق الstruct و الmodules
و ممكن بقى ابعت reference للvariable دا و هو دا الborrowing و ليه نوعين
shared reference:
اللي هو reference بس غير قابل للتعديل (immutable)
Exclusive reference:
و دا reference قابل للتعديل بستخدمه لو محتاج اغير قيمة الvariable من غير ما اخد ملكيته و طبعا الborrowing بيمشي بشروط
عشان نجاوب السؤال دا لازم نعرف مفهومين رئيسين في rust
أولهم و هو الownership
في Rust الملكية هي مفهوم بيجبرك ان كل variable في الheap بيمتلكه سكوب واحد بس و هو المالك و لما المالكية تنتقل لسكوب تاني بيحصل حاجة اسمها Move دا يعني إن السكوب الأصلي مبقاش قادر يستخدمه بعد النقل.
@TsukiHyouka لا مش دا قصدي بالظبط
هو بcontrol الvisibility
اقدر اخفي اللي انا مش عايز اليوزر يعرفه أو يتحكم فيه
مثلا لو عندي attribute معين و انا مش عايز حد يأكسس عليه دايركت الا لو عامله setter أو مخليه بابليك انا بستخدمه في الميثودز بس و كذلك الفانكشنز المعقدة اللي مش عايز اظهرها لليوزر