scope - 可以防止访问范围内声明的变量或作为函数参数的变量吗?

标签 scope namespaces rust

假设我们有一个变量(在用于其预期目的之后)不应该永远被访问。

(就 Rust 而言,这样做可能是有效的,但其内容在应用程序的上下文中在逻辑上不再有效)。

例如,在 Python 中,您可以简单地执行以下操作:

del myvar;

有没有办法禁止将来访问在函数体中声明的变量或作为参数传递的引用?


请注意,通常可以为此使用范围,但这不适用于函数参数。

最佳答案

有一个丑陋的解决方法甚至适用于 Copy 值:阴影。

enum Void {}

fn foo(x: i32) -> whatever {
    println!("{}", x);

    let x: Void;
    // Now `x` refers to an uninitialized variable with which you
    // couldn't do anything even if it was initialized
}

但是,错误消息很可怕,而且意图也很不明确。我强烈建议您重新考虑您是否非常需要这种能力。郑重声明,我从未见过在 Python 代码中将明确的 del 用于此目的。我也不记得在我读过的任何其他代码中有这样的事情。

关于scope - 可以防止访问范围内声明的变量或作为函数参数的变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39264143/

相关文章:

c++ - 什么时候在 C++ 中释放变量占用的空间?

javascript - 对象方法(Javascript)内部词法作用域绑定(bind)的机制是什么?

Python:关于变量范围。为什么我不需要将 x 传递给 Y?

php - 使用 Xpath 从带有命名空间的 XML 中获取数据

parsing - PEG语法解析不是关键字的标识符名称

rust - 我可以在不使用泛型类型的情况下获得多特征实例的特征对象吗?

coldfusion CFM变量范围

c++ - 具有未命名命名空间且声明了相同变量的命名空间

c++ - 2 个在命名空间内具有相同名称的类

Rust 内联汇编模板语法