The following program is rejected (though the sub module alone would be accepted with a warning):
mod sub {
    struct Priv;
    pub fn get_value() -> Priv { todo!() }
}
fn main() {
    sub::get_value();
} 
I believe the restrictions which cause this rejection aren't described at present in the Reference.
I think the best available documentation is in rfc2145.