According to its manual, Cargo packages can have multiple executable targets, but only one library target is allowed.
A package can contain zero or o
I would expect that it is because a library crate
within a package is already a collection (functions, types, values, etc.) whereas the binary crates
are opaque executables (with a main entry point). Consequently, the library crates name is merely the root module within its hierarchy and the binary crates name is its entirety and occur at the top level of the package.