- 
                Notifications
    You must be signed in to change notification settings 
- Fork 13.9k
          std: Stabilize the io module
          #23292
        
          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
  
    std: Stabilize the io module
  
  #23292
              
            Conversation
| r? @aturon | 
| r? @brson (rust_highfive has picked a reviewer for you, use r? to override) | 
b50eafc    to
    c79ce2c      
    Compare
  
    | Note that in the fallout commit I have duplicated "TTY detection" between libtest and libsyntax as well as a structure to replace  | 
de59d81    to
    0473a27      
    Compare
  
    | ☔ The latest upstream changes (presumably #23298) made this pull request unmergeable. Please resolve the merge conflicts. | 
f5eebbd    to
    b1f2158      
    Compare
  
    | I've modified the first commit to remove the  | 
| Really, really exciting. What a long haul! @bors: r+ b1f2158 | 
| (I left some very minor nits, feel free to fix when it bounces ;-) | 
b1f2158    to
    8bf14f7      
    Compare
  
    | @bors: r=aturon 8bf14f7 | 
| ☔ The latest upstream changes (presumably #23245) made this pull request unmergeable. Please resolve the merge conflicts. | 
| @bors: r=aturon | 
| 
 | 
| ⌛ Testing commit 2442589 with merge b3554cb... | 
| 💔 Test failed - auto-mac-64-nopt-t | 
2442589    to
    2597c05      
    Compare
  
    | @bors: r=aturon On Thu, Mar 12, 2015 at 10:53 PM, bors notifications@github.com wrote: 
 | 
| 
 | 
| ⌛ Testing commit 2597c05 with merge a7be711... | 
| 💔 Test failed - auto-mac-32-opt | 
2597c05    to
    981bf5f      
    Compare
  
    | ⌛ Testing commit 981bf5f with merge 5f2f914... | 
| ⛄ The build was interrupted to prioritize another pull request. | 
The new `std::io` module has had some time to bake now, and this commit
stabilizes its functionality. There are still portions of the module which
remain unstable, and below contains a summart of the actions taken.
This commit also deprecates the entire contents of the `old_io` module in a
blanket fashion. All APIs should now have a reasonable replacement in the
new I/O modules.
Stable APIs:
* `std::io` (the name)
* `std::io::prelude` (the name)
* `Read`
* `Read::read`
* `Read::{read_to_end, read_to_string}` after being modified to return a `usize`
  for the number of bytes read.
* `ReadExt`
* `Write`
* `Write::write`
* `Write::{write_all, write_fmt}`
* `WriteExt`
* `BufRead`
* `BufRead::{fill_buf, consume}`
* `BufRead::{read_line, read_until}` after being modified to return a `usize`
  for the number of bytes read.
* `BufReadExt`
* `BufReader`
* `BufReader::{new, with_capacity}`
* `BufReader::{get_ref, get_mut, into_inner}`
* `{Read,BufRead} for BufReader`
* `BufWriter`
* `BufWriter::{new, with_capacity}`
* `BufWriter::{get_ref, get_mut, into_inner}`
* `Write for BufWriter`
* `IntoInnerError`
* `IntoInnerError::{error, into_inner}`
* `{Error,Display} for IntoInnerError`
* `LineWriter`
* `LineWriter::{new, with_capacity}` - `with_capacity` was added
* `LineWriter::{get_ref, get_mut, into_inner}` - `get_mut` was added)
* `Write for LineWriter`
* `BufStream`
* `BufStream::{new, with_capacities}`
* `BufStream::{get_ref, get_mut, into_inner}`
* `{BufRead,Read,Write} for BufStream`
* `stdin`
* `Stdin`
* `Stdin::lock`
* `Stdin::read_line` - added method
* `StdinLock`
* `Read for Stdin`
* `{Read,BufRead} for StdinLock`
* `stdout`
* `Stdout`
* `Stdout::lock`
* `StdoutLock`
* `Write for Stdout`
* `Write for StdoutLock`
* `stderr`
* `Stderr`
* `Stderr::lock`
* `StderrLock`
* `Write for Stderr`
* `Write for StderrLock`
* `io::Result`
* `io::Error`
* `io::Error::last_os_error`
* `{Display, Error} for Error`
Unstable APIs:
(reasons can be found in the commit itself)
* `Write::flush`
* `Seek`
* `ErrorKind`
* `Error::new`
* `Error::from_os_error`
* `Error::kind`
Deprecated APIs
* `Error::description` - available via the `Error` trait
* `Error::detail` - available via the `Display` implementation
* `thread::Builder::{stdout, stderr}`
Changes in functionality:
* `old_io::stdio::set_stderr` is now a noop as the infrastructure for printing
  backtraces has migrated to `std::io`.
[breaking-change]
    
The new
std::iomodule has had some time to bake now, and this commitstabilizes its functionality. There are still portions of the module which
remain unstable, and below contains a summart of the actions taken.
This commit also deprecates the entire contents of the
old_iomodule in ablanket fashion. All APIs should now have a reasonable replacement in the
new I/O modules.
Stable APIs:
std::io(the name)std::io::prelude(the name)ReadRead::readRead::{read_to_end, read_to_string}after being modified to return ausizefor the number of bytes read.
ReadExtWriteWrite::writeWrite::{write_all, write_fmt}WriteExtBufReadBufRead::{fill_buf, consume}BufRead::{read_line, read_until}after being modified to return ausizefor the number of bytes read.
BufReadExtBufReaderBufReader::{new, with_capacity}BufReader::{get_ref, get_mut, into_inner}{Read,BufRead} for BufReaderBufWriterBufWriter::{new, with_capacity}BufWriter::{get_ref, get_mut, into_inner}Write for BufWriterIntoInnerErrorIntoInnerError::{error, into_inner}{Error,Display} for IntoInnerErrorLineWriterLineWriter::{new, with_capacity}-with_capacitywas addedLineWriter::{get_ref, get_mut, into_inner}-get_mutwas added)Write for LineWriterBufStreamBufStream::{new, with_capacities}BufStream::{get_ref, get_mut, into_inner}{BufRead,Read,Write} for BufStreamstdinStdinStdin::lockStdin::read_line- added methodStdinLockRead for Stdin{Read,BufRead} for StdinLockstdoutStdoutStdout::lockStdoutLockWrite for StdoutWrite for StdoutLockstderrStderrStderr::lockStderrLockWrite for StderrWrite for StderrLockio::Resultio::Errorio::Error::last_os_error{Display, Error} for ErrorUnstable APIs:
(reasons can be found in the commit itself)
Write::flushSeekErrorKindError::newError::from_os_errorError::kindDeprecated APIs
Error::description- available via theErrortraitError::detail- available via theDisplayimplementationthread::Builder::{stdout, stderr}Changes in functionality:
old_io::stdio::set_stderris now a noop as the infrastructure for printingbacktraces has migrated to
std::io.[breaking-change]