Hack Rust可见性和隐私



我尝试使用不使用pub密钥的外部机箱中的struct

我想最好的办法是开一家公关公司,但我的好奇心在这里被激发了。

在C++中,这很容易。我们可以做到:

#define private public
#include <...> // import public as public AND also private as public
#undef private

这将在解析代码时欺骗编译器,因此我们可以访问类的所有方法/字段。

有关于Rust的想法吗?

下面是一个具体的例子:

use warp::{
compression::{Compression, internal::CompressionProps},
reply::Response,
};
pub enum CompressionAlgorithms {
Brotli(Compression<dyn Fn(CompressionProps) -> Response>),
Deflate(Compression<dyn Fn(CompressionProps) -> Response>),
Gzip(Compression<dyn Fn(CompressionProps) -> Response>),
}

编译错误:error[E0603]: module `internal` is private-在这个例子中,我们试图导入一个模块,而不是一个结构。。。不确定它是否改变了什么。

不幸的是,如果我们没有机箱,错误E0603的文档并没有真正的帮助。Rust参考中关于可见性和隐私的文档也是如此。

有Rust的想法吗?

如果一个板条箱没有暴露出什么东西,那么那个东西就不适合你使用。这可能是一种疏忽,也可能是一个设计决定,这是无关紧要的。

编译错误:错误[E0603]:模块internal是私有的-在这个例子中,我们试图导入一个模块,而不是一个结构。。。不确定它是否改变了什么。

否。见鬼,命名方案实际上是在告诉你,私有模块是内部细节,这是非常不适合你触摸的,这一点再清楚不过了。CompressionProps特别公开。

相关内容

  • 没有找到相关文章

最新更新