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.
The primary motivation is the option to use let-else for the C-like error handling that low level system APIs usually require.
I created this as a separate PR because I didn't want these changes and discussion around it to hold #1107 hostage.
While there are a lot of opportunities to use let-else in
windows/disk.rs
I ultimately didn't change that many cases, because more often than not, the code would have had the formThe let-else syntax does have the slight advantage that it forces you to diverge/return in the
else
block. That means you can't accidentally forget to return and fall through theelse
block. But compared toit just reads weird☹️ .
In the process, I did find another interesting trick:
Error::from_win32()
internally callsGetLastError
without wrapping it in a result. For cases where we don't expect a0
success case fromGetLastError
, that seems simpler.