1 rust webassembly wasm-bindgen
我定义了一个元组结构:
pub struct ChangedCell(pub bool, pub u32, pub u32);
Run Code Online (Sandbox Code Playgroud)
我的假设
ChangedCell重 9 个字节(bool:1 个字节,u32:4 个字节,u32:4 个字节)
我做了什么
我向 JavaScript返回了一个pointer, lengthfor :Vec<ChangedCell>
pub struct ChangedCell(pub bool, pub u32, pub u32);
Run Code Online (Sandbox Code Playgroud)
const arr = new Uint8Array(memory.buffer, pointer, length * 9);
Run Code Online (Sandbox Code Playgroud)
预期行为
isVal成为valid [byte]val1成为valid [byte] * 4val2成为valid [byte] * 4问题
I am getting Garbage values!
如何将这样的内容读入 JavaScript 中?
首先,如果您要采用特定的布局,您应该将您的类型标记为repr(C):
#[repr(C)]
pub struct ChangedCell(pub bool, pub u32, pub u32);
Run Code Online (Sandbox Code Playgroud)
很可能在不使用我们的情况下获得相同的布局repr(C),但只有在显式编写时才能得到保证。
现在您可以保证 C 兼容的布局,(注意填充!)在 wasm32 中将是:
总大小:12 字节。字节 1、2 和 3 是填充的,因此未使用。
| 归档时间: |
|
| 查看次数: |
572 次 |
| 最近记录: |