Support Result<(), impl Debug>
in #[wasm_bindgen(start)]
#3263
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This adds support to
#[wasm_bindgen(start)]
to support more types closer to what Rustsfn main()
supports while not changing the current behavior of throwingJsValue
s when available.Looking at
Termination
, which is whatfn main()
uses, I added support forInfallible
andResult<(), impl Debug>
.I intentionally left
ExitCode
unaddressed because I don't know exactly what to throw in that case.I contemplated introducing a new trait, like
JsTermination
to mirror exactly what Rust does, but that's not really compatible with the current way#[wasm_bindgen(start)]
works. We could however introduce it with a new#[wasm_bindgen(main)]
if that is desired? See #3252 for a similar proposal.The way this problem was solved is by using Autoref-based specialization, see this case study by dtolnay, which is sometimes used to solve this kind of problem in macros.
Fixes #3262.