gpt4 book ai didi

rust - Hack Rust 可见性和隐私

转载 作者:行者123 更新时间:2023-12-03 11:47:31 24 4
gpt4 key购买 nike

我尝试使用 struct来自不使用 pub 的外部 crate key 。
我想最好的解决办法是打开一个 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如果我们不拥有该 crate ,它就没有真正的帮助。 the docs on visibility and privacy in the Rust Reference 相同.

最佳答案

Any idea for Rust?


如果一个 crate 没有暴露某些东西,那么那个东西不适合你使用。这可能是一个疏忽,也可能是一个设计决策,这并不重要。

Compile error: error[E0603]: module internal is private - in this example, we are trying to import a module and not a structure... Not sure if it changes anything.


不。该死的,命名方案实际上是在告诉您私有(private)模块是内部细节,再清楚不过了,这不是您想要触摸的。 CompressionProps was specifically made non-public .

关于rust - Hack Rust 可见性和隐私,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64641484/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com