Avatar ·

كيفية فرز متجه في Rust: تصاعديًا، تنازليًا، وبمنطق مخصص

مرحبًا! بدأت للتو في تعلم Rust وواجهت مشكلة: لا أستطيع فهم كيفية فرز متجه بشكل صحيح. أنا معتاد على Python حيث يمكنني ببساطة استدعاء `sorted()`، لكن الأمور هنا مختلفة. لنفترض أن لدي متجهًا من الأرقام: `let mut numbers = vec![5, 2, 8, 1, 9];`. أريد فرزه تصاعديًا للحصول على `[1, 2, 5, 8, 9]`. ثم ربما سأحتاج إلى فرزه تنازليًا. حاولت كتابة شيء مثل `numbers.sort()` ويبدو أنه يعمل، لكنني لست متأكدًا من أنه صحيح. أيضًا لدي متجه من السلاسل النصية: `let mut words = vec!["banana", "apple", "cherry", "date"];`. كيف يمكنني فرزه أبجديًا؟ وماذا لو أردت الفرز حسب طول السلسلة (مثلًا من الأقصر إلى الأطول)؟ وأخيرًا: لدي هيكل `Person` مع حقول `name` و `age`. أنشأت متجهًا `Vec`. كيف يمكنني فرزه أولاً حسب العمر ثم حسب الاسم؟ في Python كنت سأستخدم `lambda` أو `itemgetter`، أما في Rust فماذا؟ من فضلك، اشرح مع أمثلة.