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 协议》,转载必须注明作者和本文链接
推荐文章: