我尝试使用不使用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
特别公开。