Trait std::io::Write 1.0.0
[−]
[src]
pub trait Write {
fn write(&mut self, buf: &[u8]) -> Result<usize>;
fn flush(&mut self) -> Result<()>;
fn write_all(&mut self, buf: &[u8]) -> Result<()> { ... }
fn write_fmt(&mut self, fmt: Arguments) -> Result<()> { ... }
fn by_ref(&mut self) -> &mut Self where Self: Sized { ... }
}A trait for objects which are byte-oriented sinks.
Implementors of the Write trait are sometimes called 'writers'.
Writers are defined by two required methods, write and flush:
The
writemethod will attempt to write some data into the object, returning how many bytes were successfully written.The
flushmethod is useful for adaptors and explicit buffers themselves for ensuring that all buffered data has been pushed out to the 'true sink'.
Writers are intended to be composable with one another. Many implementors throughout std::io take and provide types which implement the Write trait.
Examples
use std::io::prelude::*; use std::fs::File; let mut buffer = File::create("foo.txt")?; buffer.write(b"some bytes")?;Run
Required Methods
fn write(&mut self, buf: &[u8]) -> Result<usize>
Write a buffer into this object, returning how many bytes were written.
This function will attempt to write the entire contents of buf, but the entire write may not succeed, or the write may also generate an error. A call to write represents at most one attempt to write to any wrapped object.
Calls to write are not guaranteed to block waiting for data to be written, and a write which would otherwise block can be indicated through an Err variant.
If the return value is Ok(n) then it must be guaranteed that 0 <= n <= buf.len(). A return value of 0 typically means that the underlying object is no longer able to accept bytes and will likely not be able to in the future as well, or that the buffer provided is empty.
Errors
Each call to write may generate an I/O error indicating that the operation could not be completed. If an error is returned then no bytes in the buffer were written to this writer.
It is not considered an error if the entire buffer could not be written to this writer.
Examples
use std::io::prelude::*; use std::fs::File; let mut buffer = File::create("foo.txt")?; buffer.write(b"some bytes")?;Run
fn flush(&mut self) -> Result<()>
Flush this output stream, ensuring that all intermediately buffered contents reach their destination.
Errors
It is considered an error if not all bytes could be written due to I/O errors or EOF being reached.
Examples
use std::io::prelude::*; use std::io::BufWriter; use std::fs::File; let mut buffer = BufWriter::new(File::create("foo.txt")?); buffer.write(b"some bytes")?; buffer.flush()?;Run
Provided Methods
fn write_all(&mut self, buf: &[u8]) -> Result<()>
Attempts to write an entire buffer into this write.
This method will continuously call write while there is more data to write. This method will not return until the entire buffer has been successfully written or an error occurs. The first error generated from this method will be returned.
Errors
This function will return the first error that write returns.
Examples
use std::io::prelude::*; use std::fs::File; let mut buffer = File::create("foo.txt")?; buffer.write_all(b"some bytes")?;Run
fn write_fmt(&mut self, fmt: Arguments) -> Result<()>
Writes a formatted string into this writer, returning any error encountered.
This method is primarily used to interface with the format_args! macro, but it is rare that this should explicitly be called. The write! macro should be favored to invoke this method instead.
This function internally uses the write_all method on this trait and hence will continuously write data so long as no errors are received. This also means that partial writes are not indicated in this signature.
Errors
This function will return any I/O error reported while formatting.
Examples
use std::io::prelude::*; use std::fs::File; let mut buffer = File::create("foo.txt")?; // this call write!(buffer, "{:.*}", 2, 1.234567)?; // turns into this: buffer.write_fmt(format_args!("{:.*}", 2, 1.234567))?;Run
fn by_ref(&mut self) -> &mut Self where Self: Sized
Creates a "by reference" adaptor for this instance of Write.
The returned adaptor also implements Write and will simply borrow this current writer.
Examples
use std::io::Write; use std::fs::File; let mut buffer = File::create("foo.txt")?; let reference = buffer.by_ref(); // we can use reference just like our original buffer reference.write_all(b"some bytes")?;Run
Implementors
impl Write for Fileimpl<'a> Write for &'a Fileimpl<W: Write> Write for BufWriter<W>impl<W: Write> Write for LineWriter<W>impl<'a> Write for Cursor<&'a mut [u8]>impl Write for Cursor<Vec<u8>>impl Write for Cursor<Box<[u8]>>impl<'a, W: Write + ?Sized> Write for &'a mut Wimpl<W: Write + ?Sized> Write for Box<W>impl<'a> Write for &'a mut [u8]impl Write for Vec<u8>impl Write for Sinkimpl Write for Stdoutimpl<'a> Write for StdoutLock<'a>impl Write for Stderrimpl<'a> Write for StderrLock<'a>impl Write for TcpStreamimpl<'a> Write for &'a TcpStreamimpl Write for ChildStdinimpl Write for UnixStreamimpl<'a> Write for &'a UnixStream