-
Notifications
You must be signed in to change notification settings - Fork 13.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Clarify iterator by_ref docs #135987
Merged
+15
−3
Merged
Clarify iterator by_ref docs #135987
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains 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
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think this part of the diff is necessary. The one-liner at the top and the explanation seems sufficient, maybe just adding a disclaimer that the original iterator is still mutated is enough.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"Borrows an iterator, rather than consuming it." is quite poorly phrased, as it is subsequent methods applied to the borrow, that will be prevented from consuming the original iterator.
"This is useful to allow applying iterator adapters while still retaining ownership of the original iterator." is also quite opaque, as it is already possible to do just that with the original iterator, except if the method happens to take self, but that crucial detail is not mentioned.
In addition to this, it is not obvious how the mutable borrow of an iterator turns into an iterator. It wasn't until I started writing this PR that I thought to myself: "wait a minute, there is no reason a mutable borrow of an iterator should be an iterator, unless there is an impl block that says so." Before that, I think I thought something like this: "I must be missing something about how mutable references work, because I don't see how this method works..." It is just like the
chars
method on Strings giving a Chars struct which impls iterator, except that there is no&mut impl Iterator
struct to point to, therefore I think it makes sense to link to the relevant impl directly, to show that there is no magic here.I do agree that the original iterator being mutated is still missing from my text, so I will work on that.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I see what you are getting at, but I feel that this is a bit wordy. Let me try rewording it. We should keep a one sentence header for rustdoc,
Read::by_ref
does a better job of this.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Alright, there should be a short one sentence summary at the top, can do.