Wrap entry point

Well your f::main proc-macro just returns an empty stream of tokens (TokenStream::new()), so it effectively deletes anything with a #[f::main] annotation. Hence why the compiler complains about a missing main.

You need to return a new token stream which contains the item that was passed to it.

You can also use the cargo expand sub-command to see what your macros expand to.