作用域、绑定和名字可见性
C 程序员理解作用域,通常先想到名字可见性:
void handle(void)
{
int offset = 0;
{
int len = 16;
offset += len;
}
/* len 不可见,offset 仍然可见 */
}
Rust 的块作用域也有这个规则:
fn handle() {
let mut offset = 0;
{
let len = 16;
offset += len;
}
// len 不可见,offset 仍然可见
}
但 Rust 的作用域不只决定名字能不能用。它还会影响资源什么时候释放、绑定能不能被遮蔽、引用能不能继续存在,以及哪些名字能成为模块外的 API。
阅读更多