Trait positioned_io::Size [] [src]

pub trait Size {
    fn size(&self) -> Result<Option<u64>>;
}

Trait to get the size of an I/O object.

Implementing this for a ReadAt or WriteAt makes it easier for users to predict whether they will read past end-of-file. However, it may not be possible to implement for certain readers or writers that have unknown size.

Examples

use positioned_io::Size;

let file = try!(File::open("foo.txt"));
let size = try!(file.size());
assert_eq!(size, Some(22));

// Special files probably don't have a size.
let file = try!(File::open("/dev/stdin"));
let size = try!(file.size());
assert_eq!(size, None);

Required Methods

fn size(&self) -> Result<Option<u64>>

Get the size of this object, in bytes.

This function may return Ok(None) if the size is unknown, for example if a file is a pipe.

If a positive value is returned, it should be the value such that reading at greater offsets always yields end-of-file.

Implementors