I’m unable to understand how
mod works. I've read chapter 7 from the book, read questions posted in various discussions and I’ve read tutorials. I can get mod to do simple, basic stuff, but nothing beyond the primitive examples supplied.
Similar to an example in the book, let’s say a project is divided in 2 directories:
src └── front_of_restaurant ├── hosting │ ├── add_to_waitlist │ └── seat_at_table └── serving ├── take_order ├── serve_order └── take_payment └── back_of_restaurant ├── cooking │ ├── prepare_appetizers │ └── cook_main_dishes │ └── prepare_dessert │ └── clean_up └── management ├── order_supplies ├── assign_work └── balance_accounts
What I feel the documentation does not cover is if, from
take_payment, I need to call
balance_accounts, located in a very different section of the code.
So I'm a few levels down in
front_of_restaurant and I want to call down into
back_of_restaurant. In the calling code (in
take_payment), I've tried the following:
mod back_of_restaurant; pub mod back_of_restaurant; mod src::back_of_restaurant; use back_of_restaurant; use std::back_of_restaurant; mod ::back_of_restaurant; mod crate::back_of_restaurant;
...and several other variations.
[Of course, I could also include the actual call itself, but the compiler never gets that far.]
All variations fail. Most result in:
^^^^^^^ no 'back_of_restaurant' in the root (or worse errors)
No 'back_of_restaurant' in the root? Looks to me like it’s there. I can code
mod back_of_restaurant in main.rs up at the top (i.e., src dir) level and it works great. From main, starting at the top, I can run
balance_accounts with no problem (after qualifying it properly). Why can this not be done from
take_payment? I’ve coded
pub in all legitimate locations, so I don’t think it’s a visibility issue.
I find this quite frustrating because much of the discussion printed in the documentation deals with "absolute paths". But if absolute paths were really in effect, I should be able to move a module to any arbitrary location and it would still find
balance_accounts. Currently only main (top level) or "cousin" modules within
back_of_restaurant succeed with the
Can anyone enlighten me? If this is clearly explained somewhere, feel free to berate me and call me names (but just remember to tell me where the explanation can be found). If it’s not explained somewhere, then how did you figure out how