Multi-file version

If you look at the source code in the simplestruct file, you'll find the structures at the start with the code under it. There is nothing wrong with that, but after a while, it becomes cumbersome, especially if we have a lot of structures and enumerations.

To remove this problem, we can split the structures and code over two files.

However, before we build the code, we will have to provide the main.rs file with some sort of pointer to the structures. We can do this in one of three ways. The simplest is to use the include! macro:

include!("structs.rs"); 
The source for this section is in the Chapter 7/multifile folder, present in the supporting code bundle provided for this book.

This just inserts the contents of the file in the place of the macro call, so it's not the most elegant way and completely sidesteps Rust's module system. So let's look at a better way.

The better way is to reference the module using the following snippet:

mod structs; 
use structs::*; 

This can lead to a large number of issues, the biggest being the protection level, public or private. When compiled like this, many errors, such as the following example, occur:

The error will indicate that, though the structure is public, the fields within it aren't, so they can't be accessed. The solution is to make all of the fields public.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset