rust-quiz:006-value-of-assignment.rs
题目
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 协议》,转载必须注明作者和本文链接
关于 LearnKu
推荐文章: