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