Struct grafix_toolbox::uses::sync::io::Cursor 1.0.0[−][src]
pub struct Cursor<T> { /* fields omitted */ }Expand description
A Cursor wraps an in-memory buffer and provides it with a
Seek implementation.
Cursors are used with in-memory buffers, anything implementing
AsRef<[u8]>, to allow them to implement Read and/or Write,
allowing these buffers to be used anywhere you might use a reader or writer
that does actual I/O.
The standard library implements some I/O traits on various types which
are commonly used as a buffer, like Cursor<Vec<u8>> and
Cursor<&[u8]>.
Examples
We may want to write bytes to a File in our production
code, but use an in-memory buffer in our tests. We can do this with
Cursor:
use std::io::prelude::*; use std::io::{self, SeekFrom}; use std::fs::File; // a library function we've written fn write_ten_bytes_at_end<W: Write + Seek>(writer: &mut W) -> io::Result<()> { writer.seek(SeekFrom::End(-10))?; for i in 0..10 { writer.write(&[i])?; } // all went well Ok(()) } // Here's some code that uses this library function. // // We might want to use a BufReader here for efficiency, but let's // keep this example focused. let mut file = File::create("foo.txt")?; write_ten_bytes_at_end(&mut file)?; // now let's write a test #[test] fn test_writes_bytes() { // setting up a real File is much slower than an in-memory buffer, // let's use a cursor instead use std::io::Cursor; let mut buff = Cursor::new(vec![0; 15]); write_ten_bytes_at_end(&mut buff).unwrap(); assert_eq!(&buff.get_ref()[5..15], &[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]); }
Implementations
Creates a new cursor wrapping the provided underlying in-memory buffer.
Cursor initial position is 0 even if underlying buffer (e.g., Vec)
is not empty. So writing to cursor starts with overwriting Vec
content, not with appending to it.
Examples
use std::io::Cursor; let buff = Cursor::new(Vec::new());
Consumes this cursor, returning the underlying value.
Examples
use std::io::Cursor; let buff = Cursor::new(Vec::new()); let vec = buff.into_inner();
Gets a reference to the underlying value in this cursor.
Examples
use std::io::Cursor; let buff = Cursor::new(Vec::new()); let reference = buff.get_ref();
Gets a mutable reference to the underlying value in this cursor.
Care should be taken to avoid modifying the internal I/O state of the underlying value as it may corrupt this cursor’s position.
Examples
use std::io::Cursor; let mut buff = Cursor::new(Vec::new()); let reference = buff.get_mut();
Returns the current position of this cursor.
Examples
use std::io::Cursor; use std::io::prelude::*; use std::io::SeekFrom; let mut buff = Cursor::new(vec![1, 2, 3, 4, 5]); assert_eq!(buff.position(), 0); buff.seek(SeekFrom::Current(2)).unwrap(); assert_eq!(buff.position(), 2); buff.seek(SeekFrom::Current(-1)).unwrap(); assert_eq!(buff.position(), 1);
Sets the position of this cursor.
Examples
use std::io::Cursor; let mut buff = Cursor::new(vec![1, 2, 3, 4, 5]); assert_eq!(buff.position(), 0); buff.set_position(2); assert_eq!(buff.position(), 2); buff.set_position(4); assert_eq!(buff.position(), 4);
🔬 This is a nightly-only experimental API. (cursor_remaining)
cursor_remaining)Returns the remaining length.
Examples
#![feature(cursor_remaining)] use std::io::Cursor; let mut buff = Cursor::new(vec![1, 2, 3, 4, 5]); assert_eq!(buff.remaining(), 5); buff.set_position(2); assert_eq!(buff.remaining(), 3); buff.set_position(4); assert_eq!(buff.remaining(), 1); buff.set_position(6); assert_eq!(buff.remaining(), 0);
pub fn remaining_slice(&self) -> &[u8]ⓘ🔬 This is a nightly-only experimental API. (cursor_remaining)
pub fn remaining_slice(&self) -> &[u8]ⓘcursor_remaining)Returns the remaining slice.
Examples
#![feature(cursor_remaining)] use std::io::Cursor; let mut buff = Cursor::new(vec![1, 2, 3, 4, 5]); assert_eq!(buff.remaining_slice(), &[1, 2, 3, 4, 5]); buff.set_position(2); assert_eq!(buff.remaining_slice(), &[3, 4, 5]); buff.set_position(4); assert_eq!(buff.remaining_slice(), &[5]); buff.set_position(6); assert_eq!(buff.remaining_slice(), &[]);
🔬 This is a nightly-only experimental API. (cursor_remaining)
cursor_remaining)Returns true if the remaining slice is empty.
Examples
#![feature(cursor_remaining)] use std::io::Cursor; let mut buff = Cursor::new(vec![1, 2, 3, 4, 5]); buff.set_position(2); assert!(!buff.is_empty()); buff.set_position(5); assert!(buff.is_empty()); buff.set_position(10); assert!(buff.is_empty());
Trait Implementations
Returns the contents of the internal buffer, filling it with more data from the inner reader if it is empty. Read more
Tells this buffer that amt bytes have been consumed from the buffer,
so they should no longer be returned in calls to read. Read more
🔬 This is a nightly-only experimental API. (buf_read_has_data_left)
recently added
Check if the underlying Read has any data left to be read. Read more
Read all bytes into buf until the delimiter byte or EOF is reached. Read more
Read all bytes until a newline (the 0xA byte) is reached, and append
them to the provided buffer. Read more
Returns an iterator over the contents of this reader split on the byte
byte. Read more
Returns the “default value” for a type. Read more
Pull some bytes from this source into the specified buffer, returning how many bytes were read. Read more
Like read, except that it reads into a slice of buffers. Read more
can_vector)Determines if this Reader has an efficient read_vectored
implementation. Read more
Read the exact number of bytes required to fill buf. Read more
read_initializer)Determines if this Reader can work with buffers of uninitialized
memory. Read more
Read all bytes until EOF in this source, placing them into buf. Read more
Read all bytes until EOF in this source, appending them to buf. Read more
Creates a “by reference” adaptor for this instance of Read. Read more
Creates an adaptor which will chain this stream with another. Read more
Write a buffer into this writer, returning how many bytes were written. Read more
can_vector)Determines if this Writer has an efficient write_vectored
implementation. Read more
Flush this output stream, ensuring that all intermediately buffered contents reach their destination. Read more
Attempts to write an entire buffer into this writer. Read more
write_all_vectored)Attempts to write multiple buffers into this writer. Read more
Writes a formatted string into this writer, returning any error encountered. Read more
Write a buffer into this writer, returning how many bytes were written. Read more
can_vector)Determines if this Writer has an efficient write_vectored
implementation. Read more
Flush this output stream, ensuring that all intermediately buffered contents reach their destination. Read more
Attempts to write an entire buffer into this writer. Read more
write_all_vectored)Attempts to write multiple buffers into this writer. Read more
Writes a formatted string into this writer, returning any error encountered. Read more
Write a buffer into this writer, returning how many bytes were written. Read more
can_vector)Determines if this Writer has an efficient write_vectored
implementation. Read more
Flush this output stream, ensuring that all intermediately buffered contents reach their destination. Read more
Attempts to write an entire buffer into this writer. Read more
write_all_vectored)Attempts to write multiple buffers into this writer. Read more
Writes a formatted string into this writer, returning any error encountered. Read more
Write a buffer into this writer, returning how many bytes were written. Read more
can_vector)Determines if this Writer has an efficient write_vectored
implementation. Read more
Flush this output stream, ensuring that all intermediately buffered contents reach their destination. Read more
Attempts to write an entire buffer into this writer. Read more
write_all_vectored)Attempts to write multiple buffers into this writer. Read more
Writes a formatted string into this writer, returning any error encountered. Read more
Auto Trait Implementations
impl<T> RefUnwindSafe for Cursor<T> where
T: RefUnwindSafe, impl<T> UnwindSafe for Cursor<T> where
T: UnwindSafe, Blanket Implementations
Mutably borrows from an owned value. Read more
Reads an unsigned 8 bit integer from the underlying reader. Read more
Reads a signed 8 bit integer from the underlying reader. Read more
Reads an unsigned 16 bit integer from the underlying reader. Read more
Reads a signed 16 bit integer from the underlying reader. Read more
Reads an unsigned 24 bit integer from the underlying reader. Read more
Reads a signed 24 bit integer from the underlying reader. Read more
Reads an unsigned 32 bit integer from the underlying reader. Read more
Reads a signed 32 bit integer from the underlying reader. Read more
Reads an unsigned 48 bit integer from the underlying reader. Read more
Reads a signed 48 bit integer from the underlying reader. Read more
Reads an unsigned 64 bit integer from the underlying reader. Read more
Reads a signed 64 bit integer from the underlying reader. Read more
Reads an unsigned 128 bit integer from the underlying reader. Read more
Reads a signed 128 bit integer from the underlying reader. Read more
Reads an unsigned n-bytes integer from the underlying reader. Read more
Reads a signed n-bytes integer from the underlying reader. Read more
fn read_uint128<T>(&mut self, nbytes: usize) -> Result<u128, Error> where
T: ByteOrder,
fn read_uint128<T>(&mut self, nbytes: usize) -> Result<u128, Error> where
T: ByteOrder, Reads an unsigned n-bytes integer from the underlying reader.
fn read_int128<T>(&mut self, nbytes: usize) -> Result<i128, Error> where
T: ByteOrder,
fn read_int128<T>(&mut self, nbytes: usize) -> Result<i128, Error> where
T: ByteOrder, Reads a signed n-bytes integer from the underlying reader.
Reads a IEEE754 single-precision (4 bytes) floating point number from the underlying reader. Read more
Reads a IEEE754 double-precision (8 bytes) floating point number from the underlying reader. Read more
Reads a sequence of unsigned 16 bit integers from the underlying reader. Read more
Reads a sequence of unsigned 32 bit integers from the underlying reader. Read more
Reads a sequence of unsigned 64 bit integers from the underlying reader. Read more
Reads a sequence of unsigned 128 bit integers from the underlying reader. Read more
Reads a sequence of signed 8 bit integers from the underlying reader. Read more
Reads a sequence of signed 16 bit integers from the underlying reader. Read more
Reads a sequence of signed 32 bit integers from the underlying reader. Read more
Reads a sequence of signed 64 bit integers from the underlying reader. Read more
Reads a sequence of signed 128 bit integers from the underlying reader. Read more
Reads a sequence of IEEE754 single-precision (4 bytes) floating point numbers from the underlying reader. Read more
Reads a sequence of IEEE754 double-precision (8 bytes) floating point numbers from the underlying reader. Read more
type Output = T
type Output = TShould always be Self
The inverse inclusion map: attempts to construct self from the equivalent element of its
superset. Read more
pub fn is_in_subset(&self) -> bool
pub fn is_in_subset(&self) -> boolChecks if self is actually part of its subset T (and can be converted to it).
pub fn to_subset_unchecked(&self) -> SS
pub fn to_subset_unchecked(&self) -> SSUse with care! Same as self.to_subset but without any property checks. Always succeeds.
pub fn from_subset(element: &SS) -> SP
pub fn from_subset(element: &SS) -> SPThe inclusion map: converts self to the equivalent element of its superset.
pub fn vzip(self) -> VWrites an unsigned 8 bit integer to the underlying writer. Read more
Writes a signed 8 bit integer to the underlying writer. Read more
Writes an unsigned 16 bit integer to the underlying writer. Read more
Writes a signed 16 bit integer to the underlying writer. Read more
Writes an unsigned 24 bit integer to the underlying writer. Read more
Writes a signed 24 bit integer to the underlying writer. Read more
Writes an unsigned 32 bit integer to the underlying writer. Read more
Writes a signed 32 bit integer to the underlying writer. Read more
Writes an unsigned 48 bit integer to the underlying writer. Read more
Writes a signed 48 bit integer to the underlying writer. Read more
Writes an unsigned 64 bit integer to the underlying writer. Read more
Writes a signed 64 bit integer to the underlying writer. Read more
fn write_u128<T>(&mut self, n: u128) -> Result<(), Error> where
T: ByteOrder,
fn write_u128<T>(&mut self, n: u128) -> Result<(), Error> where
T: ByteOrder, Writes an unsigned 128 bit integer to the underlying writer.
fn write_i128<T>(&mut self, n: i128) -> Result<(), Error> where
T: ByteOrder,
fn write_i128<T>(&mut self, n: i128) -> Result<(), Error> where
T: ByteOrder, Writes a signed 128 bit integer to the underlying writer.
Writes an unsigned n-bytes integer to the underlying writer. Read more
Writes a signed n-bytes integer to the underlying writer. Read more
Writes an unsigned n-bytes integer to the underlying writer. Read more
Writes a signed n-bytes integer to the underlying writer. Read more
Writes a IEEE754 single-precision (4 bytes) floating point number to the underlying writer. Read more