The directory layout of the project should match the module hierarchy. bar
is a submodule of foo so it shouldn't live next to foo in the filesystem.
There are a couple of filesystem setups that will work:
src/
main.rs
foo/
mod.rs
bar.rs
src/
main.rs
foo/
mod.rs
bar/
mod.rs
The first configuration seems to be what most code uses. If bar ends up
having submodules of its own, it would need to move to the second setup.
Steven Fackler
On Sun, Jun 1, 2014 at 3:02 PM, Nicholas Bishop <[email protected]>
wrote:
> Here's example code:
>
> /src/main.rs:
> mod foo;
> fn main() {
> foo::foo();
> }
>
> /src/bar.rs:
> pub fn bar() {
> }
>
> /src/foo.rs:
> mod bar;
> pub fn foo() {
> bar::bar();
> }
>
> This fails:
> $ rust-nightly-x86_64-unknown-linux-gnu/bin/rustc -v
> rustc 0.11.0-pre-nightly (064dbb9 2014-06-01 00:56:42 -0700)
> host: x86_64-unknown-linux-gnu
>
> $ rust-nightly-x86_64-unknown-linux-gnu/bin/rustc main.rs
> foo.rs:1:5: 1:8 error: cannot declare a new module at this location
> foo.rs:1 mod bar;
> ^~~
> foo.rs:1:5: 1:8 note: maybe move this module `foo` to its own
> directory via `foo/mod.rs`
> foo.rs:1 mod bar;
> ^~~
> foo.rs:1:5: 1:8 note: ... or maybe `use` the module `bar` instead of
> possibly redeclaring it
> foo.rs:1 mod bar;
> ^~~
> error: aborting due to previous error
>
> I tried the first suggestion (moving foo.rs to foo/mod.rs), this fails
> too:
> foo/mod.rs:1:5: 1:8 error: file not found for module `bar`
> foo/mod.rs:1 mod bar;
> ^~~
>
> The second suggestion, which I took to mean replacing "mod bar" with
> "use bar", also failed:
> brokencrate/foo.rs:1:5: 1:8 error: unresolved import: there is no `bar`
> in `???`
> brokencrate/foo.rs:1 use bar;
> ^~~
> brokencrate/foo.rs:1:5: 1:8 error: failed to resolve import `bar`
> brokencrate/foo.rs:1 use bar;
> ^~~
> error: aborting due to 2 previous errors
>
> I'm guessing that this failure is related to this RFC:
>
> https://github.com/rust-lang/rfcs/blob/master/complete/0016-module-file-system-hierarchy.md
>
> Unfortunately the RFC describes "a common newbie mistake" but not what
> a newbie might do to correct this mistake. I also looked through
> http://doc.rust-lang.org/tutorial.html#crates-and-the-module-system,
> but didn't see this question directly addressed.
>
> Thanks,
> -Nicholas
> _______________________________________________
> Rust-dev mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/rust-dev
>
_______________________________________________
Rust-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/rust-dev