Using the single crate mechanism is not easy to setup because:
- of the specific targets dependencies
- it doesn't work very well with cargo. Sometimes cargo build the lib.rs even if it is not asked for it
- It's also annoying for autocompletion and
cargo check command as they don't work because of the limitation of the target on lib.rs.
For all those reason it is best to actually force the user to separate the run crate from the app crate. Making the first argument of the proc macro required is also a good thing because it's easy to forget that it exists (it's the name of the frontend crate in the workspace).