rust-quiz:006-value-of-assignment.rs

godme發表於2022-07-08
use std::mem;

fn main() {
    let a;
    let a = a = true;
    print!("{}", mem::size_of_val(&a));
}
  • ZST
    ZSTrust中使用廣泛。
    大多數程式語言中的MapSet,有一種很奇妙的關係。
    Set基本上都是構建於Map之上,但是主要的問題是Value應該如何選取。
    ValueSetMap實現中,都是無關緊要的,但都為此付出了額外的記憶體開銷。
    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 = ()()作為ZSTstd:: mem:size_of_val(&())0

不言而喻,結果是0

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章