pub struct Buffer<'a>(/* private fields */);
Expand description

Buffer is a read-write buffer that can be used for I/O with the block device. They are created by a BufferAllocator, and automatically deallocate themselves when they go out of scope.

Most usage will be on the unowned BufferRef and MutableBufferRef types, since these types are used for Device::read and Device::write.

Buffers are always block-aligned (both in offset and length), but unaligned slices can be made with the reference types. That said, the Device trait requires aligned BufferRef and MutableBufferRef objects, so alignment must be restored by the time a device read/write is requested.

For example, when writing an unaligned amount of data to the device, generally two Buffers would need to be involved; the input Buffer could be used to write everything up to the last block, and a second single-block alignment Buffer would be used to read-modify-update the last block.

Implementations§

source§

impl<'a> Buffer<'a>

source

pub fn as_ref(&self) -> BufferRef<'_>

Takes a read-only reference to this buffer.

source

pub fn subslice<R: SliceRange>(&self, range: R) -> BufferRef<'_>

Takes a read-only reference to this buffer over |range| (which must be within the size of the buffer).

source

pub fn as_mut(&mut self) -> MutableBufferRef<'_>

Takes a read-write reference to this buffer.

source

pub fn subslice_mut<R: SliceRange>(&mut self, range: R) -> MutableBufferRef<'_>

Takes a read-write reference to this buffer over |range| (which must be within the size of the buffer).

source

pub fn len(&self) -> usize

Returns the buffer’s capacity.

source

pub fn as_slice(&self) -> &[u8]

Returns a slice of the buffer’s contents.

source

pub fn as_mut_slice(&mut self) -> &mut [u8]

Returns a mutable slice of the buffer’s contents.

source

pub fn range(&self) -> Range<usize>

Returns the range in the underlying BufferSource that this buffer covers.

source

pub fn allocator(&self) -> &BufferAllocator

Returns a reference to the allocator.

Trait Implementations§

source§

impl<'a> Debug for Buffer<'a>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'a> Drop for Buffer<'a>

source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

§

impl<'a> Freeze for Buffer<'a>

§

impl<'a> RefUnwindSafe for Buffer<'a>

§

impl<'a> Send for Buffer<'a>

§

impl<'a> Sync for Buffer<'a>

§

impl<'a> Unpin for Buffer<'a>

§

impl<'a> !UnwindSafe for Buffer<'a>

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> Encode<Ambiguous1> for T

source§

unsafe fn encode( self, _encoder: &mut Encoder<'_>, _offset: usize, _depth: Depth ) -> Result<(), Error>

Encodes the object into the encoder’s buffers. Any handles stored in the object are swapped for Handle::INVALID. Read more
source§

impl<T> Encode<Ambiguous2> for T

source§

unsafe fn encode( self, _encoder: &mut Encoder<'_>, _offset: usize, _depth: Depth ) -> Result<(), Error>

Encodes the object into the encoder’s buffers. Any handles stored in the object are swapped for Handle::INVALID. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more