When the Rust doc says that a crate can only have a library and a binary, this refers to the output produced by each crate definition.
For example, if you produce some code, you can have a single executable to run, and/or a single library for other code to link to.
You can split the library product (output) into modules, so that you can develop each of those modules separately and produce one final bundled library at the end.
Modules are sort of like internal libraries which will be bundled together to produce either one big external library at the end, or indeed a whole binary executable.
Think of Crates as finished products which others can use, while modules are components. The standard library is one crate, made of many different modules. You can also have sub-modules, and have as many as you like. But they are compiled into one final (output) library by Cargo.
You can also include as many crates in a package as you like, but your crate only usually results in one executable (most cases) or a single library.