Skip to content

docs: Small clarification on the usage of read_to_string and read_to_end trait methods #142102

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

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

kiseitai3
Copy link

@kiseitai3 kiseitai3 commented Jun 6, 2025

Small clarification on the usage of read_to_string and read_to_end trait methods. The goal is to make it clear that these trait methods will become locked up if attempting to read to the end of stdin (which is a bit non-sensical unless the other end closes the pipe).

Fixes: #141714

@rustbot
Copy link
Collaborator

rustbot commented Jun 6, 2025

r? @joboet

rustbot has assigned @joboet.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-libs Relevant to the library team, which will review and decide on the PR/issue. labels Jun 6, 2025
@rustbot
Copy link
Collaborator

rustbot commented Jun 6, 2025

⚠️ Warning ⚠️

  • Some commits in this PR modify submodules.

@kiseitai3
Copy link
Author

This is follow up work on #141935. If possible, reassign to @tgross35. A mistake was made in the previous PR. I attempted a rebase and one thing led to another and the branch became a mess, so I killed the branch. That autoclosed the old PR, so I opened a new one with changes more in line with what Trevor asked.

Sorry, but I hope this PR is more like what is expected in this project.

@rust-log-analyzer
Copy link
Collaborator

The job mingw-check-2 failed! Check out the build log: (web) (plain)

Click to see the possible cause of the failure (guessed by this bot)
 Documenting std v0.0.0 (/checkout/library/std)
error: unresolved link to `read`
   --> library/std/src/io/mod.rs:929:58
    |
929 |     /// Using `.lines()` with a [`BufReader`] or using [`read`] can provide a better solution
    |                                                          ^^^^ no item named `read` in scope
    |
    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
    = note: `-D rustdoc::broken-intra-doc-links` implied by `-D warnings`
    = help: to override `-D warnings` add `#[allow(rustdoc::broken_intra_doc_links)]`

error: unresolved link to `read`
   --> library/std/src/io/mod.rs:983:58
    |
983 |     /// Using `.lines()` with a [`BufReader`] or using [`read`] can provide a better solution
    |                                                          ^^^^ no item named `read` in scope
    |
    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`

error: unresolved link to `read`
    --> library/std/src/io/mod.rs:1297:54
     |
1297 | /// Using `.lines()` with a [`BufReader`] or using [`read`] can provide a better solution
     |                                                      ^^^^ no item named `read` in scope
     |
     = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`

error: could not document `std`
warning: build failed, waiting for other jobs to finish...
[RUSTC-TIMING] std test:false 7.739
Command has failed. Rerun with -v to see more details.
Build completed unsuccessfully in 0:01:00
  local time: Fri Jun  6 01:56:08 UTC 2025
  network time: Fri, 06 Jun 2025 01:56:08 GMT
##[error]Process completed with exit code 1.
Post job cleanup.

Comment on lines +925 to +927
/// `cat <file> | <my_rust_program>` will correctly terminate with an `EOF` upon closure of cat.
/// Reading user input or running programs that remain open indefinitely will never terminate
/// the stream with `EOF` (e.g. `yes "Data" | pv | <my_rust_program`).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two tiny requests:

  • cat <file> | <my_rust_program -> cat file | my-rust-program, since those are totally valid binary names they don't need the <>. (kebab case is slightly more common for binaries)
  • yes | my-rust-program same as above, and I don't think Data or pv are relevant to the output here are they?

Comment on lines +929 to +930
/// Using `.lines()` with a [`BufReader`] or using [`read`] can provide a better solution
///
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You'll need to add [`read`]: Read::read after this section for the link to go through. Also, looks like there's an extra newline at the end here

@tgross35
Copy link
Contributor

tgross35 commented Jun 6, 2025

If possible, reassign to @tgross35

I'll let you do this yourself for the experience :) you can request reviews by posting a comment, see rustbot's guidelines:

Use r? to explicitly pick a reviewer

@tgross35
Copy link
Contributor

tgross35 commented Jun 6, 2025

Also it looks like you accidentally picked up a submodule change here. There's about 1000 different ways to fix this but if you need a suggestion, I would do something like this:

# Reset to the point where your branch forked from `master`. The reset will get rid
# of your commit and mark all of the files as staged
git reset "$(git merge-base HEAD master)"

# Add the thing you care about
git add library/std

# Get ride of the unintentional changes
git restore src/doc

# Re-commit the files (now only what you care about) using 🪄 magic 🪄 to
# reuse the commit message you have now
git commit -C HEAD@{1}

# Update this PR
git push --force-with-lease

Also, you can always check exactly what your PR will look like before pushing with git diff "$(git merge-base HEAD master)", to avoid things like whatever bad luck you ran into with #141935 (comment).

(happy to help with git stuff if you have further questions)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-libs Relevant to the library team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Cannot read from STDIN with read_to_string if reading before piping Rust program writes to STDOUT in another Rust program
5 participants