【发布时间】:2019-09-13 05:29:13
【问题描述】:
我想将类似的函数分组到一个文件中。这些函数需要返回一个不公开的类型:
struct MyStruct;
mod my_mod {
use super::MyStruct;
// There are other, similar functions that also return `MyStruct`
pub fn foo() -> MyStruct {
MyStruct
}
}
fn main() {
let _var = my_mod::foo();
}
这会失败并出现错误
error[E0446]: private type `MyStruct` in public interface
--> src/main.rs:7:3
|
1 | struct MyStruct;
| - `MyStruct` declared as private
...
7 | pub fn foo() -> MyStruct { MyStruct }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ can't leak private type
一般来说,不允许公共函数在其签名中包含私有类型是有意义的,但在这种特定情况下,结构在模块根级别可用。
有没有办法在不公开MyStruct 的情况下支持这一点?
【问题讨论】:
标签: module rust visibility