zerocopy

zerocopy Crate (來自 Fuchsia) 提供特徵和巨集,可在位元組序列和其他型別之間安全地轉換。

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

這不適合 MMIO (因為並非採用揮發性讀取和寫入方法),但很適合搭配使用與硬體共用的結構 (例如藉由 DMA),或透過外部介面傳送的結構。

Speaker Notes

  • FromBytes 可針對任何位元組模式有效的型別實作,因此可從不受信任的位元組序列安全地完成轉換。
  • 嘗試衍生這些型別的 FromBytes 會失敗,因為 RequestType 不會使用所有可能的 u32 值做為判別值,所以並非所有位元組模式都有效。
  • zerocopy::byteorder 的型別適用於瞭解位元組順序的數值基元。
  • 使用 src/bare-metal/useful-crates/zerocopy-example/ 下的 cargo run 執行範例 (在 Playground 中,範例會因為 Crate 依附元件而無法執行)。