الحصول على شرائح لأنواع مختلفة من Stack و Boxed

الموضوع في 'تقييم المقررات الدراسية - ISE' بواسطة jellybeam, بتاريخ ‏27 ابريل 2023.

الوسوم:
  1. jellybeam

    jellybeam عضو

    انضم:
    ‏22 سبتمبر 2022
    المشاركات:
    12
    التخصص:
    Business
    الجامعة:
    UIUC
    سنة التخرج:
    2017
    الجنس:
    ذكر
    الإقامة:
    Urbana, Illinois
    التقييمات:
    +0 / 0 / -0
    أنا أعمل على هياكل بيانات معينة تتطلب بعض البيانات للحصول على أمر (AVL) ، وبدلاً من إجبار المستخدم على إنشاء دالة مثل .hash () ، أود استخدام تجزئة Blake3. المشكلة هي أن الهاشر يتطلب شريحة u8 ليعمل.

    اكتشفت هذه الطريقة التي تعيد الشريحة المطلوبة.
    كود:
    unsafe fn as_u8_slice<T: Sized>(p: &T) -> &[u8] {
        core::slice::from_raw_parts(
            (p as *const T) as *const u8,
            core::mem::size_of::<T>()
        )
    }
    تم الحصول على هذا الرمز من سؤال تجاوز سعة المكدس ، ومع ذلك لا يمكنني العثور على الرابط :(
    لقد رأيت منشور مدونة بواسطة scaler مع مثال مشابه ، والذي قال إن هذه الطريقة يمكن استخدامها مع أي متغيرات يقوم نوعها بتنفيذ AsRef [u8]>. وبالمثل ، فإنه يتطلب سلوكًا معينًا من أعضاء شجرة AVL.

    تعمل هذه الطريقة تمامًا كما هو متوقع للمتغيرات المكدسة فقط ، ولكن بالنسبة لمكونات Box مثل السلاسل ، فإنها ترجع شريحة إلى "البيانات الوصفية" للسلسلة بدلاً من المحتوى. هل من الممكن إنشاء دالة "عامة" تقوم بإرجاع شريحة من بيانات الكومة في أنواع البيانات التي تدعمها؟ وكيف تعمل مع بنيات Boxed؟
     
جاري تحميل الصفحة...
مواضيع شبيهة - الحصول على شرائح لأنواع مختلفة من Stack Boxed
  1. Double cake
    الردود:
    0
    المشاهدات:
    969
  2. Double cake
    الردود:
    0
    المشاهدات:
    681
  3. Bar-Code
    الردود:
    5
    المشاهدات:
    2,390
  4. IllIlI
    الردود:
    6
    المشاهدات:
    2,384
  5. Abdul88
    الردود:
    9
    المشاهدات:
    4,853
  6. Hussein Dh
    الردود:
    0
    المشاهدات:
    772
  7. OWHEADING
    الردود:
    6
    المشاهدات:
    2,474
  8. sultan112
    الردود:
    4
    المشاهدات:
    1,200
  9. outside
    الردود:
    4
    المشاهدات:
    2,537
  10. outside
    الردود:
    18
    المشاهدات:
    5,483

مشاركة هذه الصفحة