举Option<bool>个例子,我知道Option<bool>和的大小bool都是 1 字节,但我仍然不能 100% 理解其变体的内存分配是如何发生的。
它的工作原理如下吗?
Some(true)到00000001
Some(false)到00000000
None00000001除了或00000000(例如:)00000010之外的东西(根据下面的评论从“任何东西”更改)
此代码将打印 的所有 3 个可能值的字节值Option<bool>:
fn main() {
let a:[Option<bool>;3]=[Some(true), Some(false), None];
for i in a {
// Re-Interpret the bytes of the option as a number
let j:u8 = unsafe { std::mem::transmute(i) };
println!("{i:?} {j:?}");
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
Some(true) 1
Some(false) 0
None 2
Run Code Online (Sandbox Code Playgroud)
好像None表示为2。
请注意,这并未正式指定,因此在未来版本中可能会发生变化。不要依赖这种行为。
| 归档时间: |
|
| 查看次数: |
773 次 |
| 最近记录: |