zerocopy

Крейт zerocopy (від Fuchsia) надає трейти та макроси для безпечного перетворення між послідовностями байтів та іншими типами.

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Це не підходить для MMIO (оскільки він не використовує непостійні читання та записи), але може бути корисним для роботи зі структурами, спільними з обладнанням, наприклад, з прямим доступом до пам’яті (DMA), або переданими через зовнішній інтерфейс.

Speaker Notes

  • FromBytes можна реалізувати для типів, для яких дійсний будь-який шаблон байтів, і тому його можна безпечно перетворити з ненадійної послідовності байтів.
  • Спроба отримати FromBytes для цих типів не вдасться, оскільки RequestType не використовує всі можливі значення u32 як дискримінанти, тому не всі шаблони байтів є дійсними.
  • zerocopy::byteorder має типи для числових примітивів з урахуванням порядку байтів.
  • Запустіть приклад із cargo run у src/bare-metal/useful-crates/zerocopy-example/. (Він не працюватиме на Rust Playground через залежність від крейту.)