ReadFuture

Struct ReadFuture 

Source
pub struct ReadFuture<'ring, 'buf> { /* private fields */ }
Expand description

Future for file read operations.

This future polls the completion queue until the read operation completes, then returns the number of bytes read and buffer ownership. The future ensures proper cleanup of waker registrations and handles both successful completions and error conditions.

§Type Parameters

  • 'ring - Lifetime of the io_uring Ring instance
  • 'buf - Lifetime of the buffer used for the read operation

§Returns

Returns (usize, Pin<&'buf mut [u8]>) on success where:

  • usize is the number of bytes read
  • Pin<&'buf mut [u8]> is the buffer with read data

§Examples

let mut ring = Ring::new(32)?;
let mut buffer = PinnedBuffer::with_capacity(1024);
let file = File::open("example.txt")?;

// Buffer lifetime must outlive the operation
let read_future = ring.read(file.as_raw_fd(), buffer.as_mut_slice())?;
let (bytes_read, _buffer) = read_future.await?;

println!("Read {} bytes", bytes_read);

Trait Implementations§

Source§

impl<'ring, 'buf> Drop for ReadFuture<'ring, 'buf>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl<'ring, 'buf> Future for ReadFuture<'ring, 'buf>

Source§

type Output = Result<(usize, Pin<&'buf mut [u8]>), Error>

The type of value produced on completion.
Source§

fn poll(self: StdPin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output>

Attempts to resolve the future to a final value, registering the current task for wakeup if the value is not yet available. Read more

Auto Trait Implementations§

§

impl<'ring, 'buf> Freeze for ReadFuture<'ring, 'buf>

§

impl<'ring, 'buf> !RefUnwindSafe for ReadFuture<'ring, 'buf>

§

impl<'ring, 'buf> Send for ReadFuture<'ring, 'buf>

§

impl<'ring, 'buf> Sync for ReadFuture<'ring, 'buf>

§

impl<'ring, 'buf> Unpin for ReadFuture<'ring, 'buf>

§

impl<'ring, 'buf> !UnwindSafe for ReadFuture<'ring, 'buf>

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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.

Source§

impl<F> IntoFuture for F
where F: Future,

Source§

type Output = <F as Future>::Output

The output that the future will produce on completion.
Source§

type IntoFuture = F

Which kind of future are we turning this into?
Source§

fn into_future(self) -> <F as IntoFuture>::IntoFuture

Creates a future from a value. Read more
Source§

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

Source§

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>,

Source§

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.