ich ähnliche Funktionen in einer Datei gruppieren möchten, jedoch müssen diese Funktionen eine Art Rückkehr, die nicht öffentlich ist:Wie referenziert man Typen von Funktionssignaturen in privaten Modulen?
struct MyStruct {
// ....
}
mod my_mod {
pub fn foo() -> super::MyStruct { ... }
pub fn bar() -> super::MyStruct { ... }
pub fn baz() -> super::MyStruct { ... }
}
fn main() {
let var = my_mod::foo();
}
Diese error: private type in public interface [E0446]
mit dem Fehler fehlschlägt.
Im Allgemeinen ist es sinnvoll, öffentlichen Funktionen nicht zu erlauben, private Typen in ihrer Signatur zu haben. In diesem speziellen Fall ist die Struktur jedoch auf der Root-Ebene der Module verfügbar.
Gibt es eine Möglichkeit, dies zu unterstützen, ohne MyStruct
öffentlich zu machen?
Es sieht sicherlich aus wie ein Fehler/Einschränkung, ich habe https://github.com/rust-lang/rust/issues/30905 aufgespürt, das scheint in etwa das gleiche Problem zu sein. –