[][src]Crate read_write_at

Abstraction of a file- or block derive-like object, data from/to which can be read/written at offsets.

There are alreay some analogues of those traits, including in libstd. But they are either platform-specific or tied to implementation of some algorithm.

This crate focuses on the abstraction itself, providing mostly wrappers and helper functions.

Traits are given in two varieties: with mutable &mut self and immutable &self methods.

libstd's platform-specific FileExt traits are forwarded for std::fs::File.

There is a generic wrapper for using Read+Seek or Read+Write+Seek objects

Immutable version of traits are implemented for RefCells or Mutexs over mutable versions. You may need to use DerefWrapper it you use trait ojects although.

TODO:

  • vectored IO
  • async?
  • reading to uninitialized buffers?
  • bytes crate intergration?

Structs

DerefWrapper

A wrapper struct to allow accessing RefCell and Mutex helper impls for trait objects.

ReadWriteSeek

A wrapper that calls Seek::seek and Read::read or Write::write for each call of read_at or write_at Can be used for read-only access as well.

Traits

ReadAt

Read-only generalisation of std::os::unix::fs::FileExt

ReadAtMut

Similar to ReadAt, but functions may allow to change object state, including cursor moves if the object has concept of a cursor

ReadWriteAt

A combined ReadAt and WriteAt for trait objects.

ReadWriteAtMut

A combined ReadAtMut and WriteAtMut for trait objects

WriteAt

Write counterpart of ReadAt.

WriteAtMut

Similar to WriteAt, but functions may allow to change object state, including cursor moves if the object has concept of a cursor.