Change null handling when creating Id
s
#131
Merged
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.
Option::unwrap_unchecked
is stable since 1.58, and that is IMO much clearer than wrapping things inNonNull
beforehand (see the changelog entry for an example).The real motivation for this change is from #81, where the naive implementation of
Id::retain_autoreleased_null
would have been completely broken (the extra branch inNonNull::new(ptr).map(|ptr| unsafe { Id::retain_autoreleased(ptr) })
would interfere).Also, looking through the code I seem to have used
NonNull::new_unchecked
a lot more than what's entirely correct (+ alloc
/+ new
can returnnil
when out of memory), so changing those tounwrap
makes things better in that regard (albeit a tiny bit slower).