This piece of code exports a public type synonym
Interface but hides some internal types within the module (namely
Adaptor). Tryping to export either in a function’s signature is an error, as expected, while exporting the public type synonym
Interface is perfectly valid. This is good news for everyone, as that means Rust properly supports abstract types.
However, this currently produces an error that contains the line: "found
a::Adaptor<a::Internal>". Neither of these types would be in the documentation for the
a module, so why should the type errors display it, either? Is this a bug? I don’t think resorting to newtypes is necessarily the appropriate solution in this case because the
pub Synonym = PrivateInternalType pattern is currently a valid one, and I like it a lot (it reminds me of ML).