zerocopy

این crate zerocopy (از Fuchsia) صفات و ماکروهایی را برای تبدیل ایمن بین دنباله‌های بایت و انواع دیگر فراهم می‌کند.

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

این برای MMIO مناسب نیست (زیرا از خواندن و نوشتن فرار یا volatile استفاده نمی‌کند)، اما می‌تواند برای کار با ساختارهای مشترک با سخت افزار مفید باشد. توسط DMA، یا از طریق برخی از رابط‌های خارجی ارسال می‌شود.

Speaker Notes

  • FromBytes را می‌توان برای انواعی که هر الگوی بایتی برای آنها معتبر است پیاده‌سازی کرد و بنابراین می‌توان با خیال راحت از یک دنباله بایت‌های نامعتبر تبدیل کرد.
  • تلاش برای استخراج FromBytes برای این تایپ‌ها ناموفق خواهد بود، زیرا RequestType از همه مقادیر ممکن u32 به عنوان متمایزکننده استفاده نمی‌کند، بنابراین همه الگوهای بایت معتبر نیستند.
  • zerocopy::byteorder دارای تایپ‌های برای اعداد اولیه مطلع از byte-order است.
  • مثال را با cargo run در src/bare-metal/useful-crates/zerocopy-example/اجرا کنید. (به دلیل وابستگی به crate در Playground اجرا نمی‌شود.)