error[E0308]: mismatched types --> $DIR/show_module.rs:14:5 | LL | fn foo() -> Foo { | --- expected `baz::Foo` because of return type LL | meh::Foo | ^^^^^^^^ expected `baz::Foo`, found `meh::Foo` | = note: `meh::Foo` and `baz::Foo` have similar names, but are actually distinct types note: `meh::Foo` is defined in module `crate::meh` of the current crate --> $DIR/show_module.rs:8:5 | LL | pub struct Foo; | ^^^^^^^^^^^^^^ note: `baz::Foo` is defined in module `crate::blah::baz` of the current crate --> $DIR/show_module.rs:3:9 | LL | pub struct Foo; | ^^^^^^^^^^^^^^ error: aborting due to previous error For more information about this error, try `rustc --explain E0308`.