【发布时间】:2021-02-14 20:52:56
【问题描述】:
我尝试使用来自不使用 pub 密钥的外部 crate 中的 struct。
我想最好的解决办法是打开一个 PR,但我的好奇心在这里被激发了。
在 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 - 在这个例子中,我们试图导入一个模块而不是一个结构......不确定它是否会改变任何东西。
不幸的是,如果我们不拥有箱子,the docs for error E0603 并没有真正的帮助。 the docs on visibility and privacy in the Rust Reference 也一样。
【问题讨论】:
标签: rust class-visibility