The RFC as specified doesn’t actually require that the output replaces main(). In fact, it could just as easily keep its defined name, and that way could call a user-defined main() if so desired. I believe this also address the later point you make about wanting to wrap a user main().
I’m not exactly sure why you think they won’t work in that mode? Is there a reason to preclude that use-case? Even a fuzzer could be applied the lib case, you just wouln’t have all that many things tagged as #[fuzz]?
I may be misunderstanding, but I believe the execution context sets do the same thing?
Although @Centril pointed out just now that it’ll be a little tedious to always specify the folder if you generally want the same folder for, say, benchmarks, in most cases. It’d be totally reasonable for the execution context to also define its default folders in some way. This is a minor point though.
Agreed.
I’m not sure I understand? Benches and fuzzers aren’t tests, and therefore I’d argue that it is confusing to call them test frameworks. Which execution contexts avoids?
I’m having a hard time making up my mind about this one. While it is true that conceptually we are “supporting less” by providing a full-crate rewrite macro, I think it’s also exposing a very wide API that we’ll then need to deal with for the foreseeable future. This is a very powerful form of macro, that will enable people to essentially come up with their own “version” of Rust that looks completely different. Maybe this is a good thing, but I’m not so sure. We really don’t want to end up in the world of crates choosing their own Rust flavors with vastly different syntax, as it starts to split the ecosystem. I agree that my proposed rewrite is much more limited, but it still sufficiently flexible to support all the use-cases brought up so far in this thread (I think), while not just saying “do whatever you want!”. Ultimately, I wonder if the lang team might want to have a gander at this too, but regardless I think we should think carefully about how wide of an API it’s a good idea to expose.
That all said, this is (for now) an eRFC, so picking one and moving forward is probably fine no matter which one we pick. They will both require mostly the same components.