use std::mem;
fn main() {
let a;
let a = a = true;
print!("{}", mem::size_of_val(&a));
}
ZST
ZST在rust
中使用廣泛。
大多數程式語言中的Map
和Set
,有一種很奇妙的關係。Set
基本上都是構建於Map
之上,但是主要的問題是Value
應該如何選取。Value
在Set
的Map
實現中,都是無關緊要的,但都為此付出了額外的記憶體開銷。ZST
就是解決這種問題的辦法,作為一種無大小的型別,並不佔用記憶體空間。
常見的()
就是一個ZST
。變數遮蔽
rust
中變數的重新繫結let
會對變數進行遮蔽。賦值結果
let a = 1;
的賦值結果會返回什麼,rust
的賦值結果返回是()
。記憶體大小
std:: mem::size_of_val
可以查探物件佔用記憶體的大小。
很明顯,本題主要是得到a
的記憶體佔用大小。let a = a = true;
,如果擔心不知道bool
型別佔用多少。
我可以告訴你,std:: mem::size_of_val(&true)
是1
。
但關鍵的是,let a = (a = true)
,賦值語句的結果是()
。
因此let a = ()
,()
作為ZST
,std:: mem:size_of_val(&())
是0
。
不言而喻,結果是0
。
本作品採用《CC 協議》,轉載必須註明作者和本文連結