Correct borrow, and impl Send for RawIter#536
Open
jamesmunns wants to merge 3 commits intohawkw:mainfrom
Open
Conversation
Collaborator
Author
|
Fun note I just realized: if we are iterating in an async context, the items yielded by the iterator ( |
jamesmunns
added a commit
to tweedegolf/cfg-noodle
that referenced
this pull request
Jun 4, 2025
…r types Unfortunately as we are holding NonNulls across await points, we'll still need some kind of adapter to mark this as sound. This means that hawkw/mycelium#536 is not in and of itself sufficient. Comments have been updated to reflect this.
Collaborator
Author
|
(I still think we should merge this, in case some users don't need to hold the yielded ptrs across await point, and to fix the &mut soundness hole). |
hawkw
approved these changes
Dec 27, 2025
Owner
hawkw
left a comment
There was a problem hiding this comment.
okay yeah we should probably just merge this, thanks and sorry i forgot about it for, uh, 7 months... 😅
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Fixes #535
This change fixes the two things noted in the #535: RawIter now holds an
&mutto the List, and also now implements Send.I think we could also implement Send for Iter/IterMut, but I'm less confident about that.
I also am not certain whether the unsafe
Sendimpl should be gated onT: Send, I opted not to because we never take ownership of a node (e.g. apop) using the RawIter interface, so we're only ever "visiting" a pinned node, so requiringT: Senddidn't seem necessary. I'm open to more confident logic around that.I also added a util helper to assert that RawIter remains Send.