use super::File; use futures::{Future, Poll}; use std::io; /// Future returned by `File::seek`. #[derive(Debug)] pub struct SeekFuture { inner: Option, pos: io::SeekFrom, } impl SeekFuture { pub(crate) fn new(file: File, pos: io::SeekFrom) -> Self { Self { pos, inner: Some(file), } } } impl Future for SeekFuture { type Item = (File, u64); type Error = io::Error; fn poll(&mut self) -> Poll { let pos = try_ready!( self.inner .as_mut() .expect("Cannot poll `SeekFuture` after it resolves") .poll_seek(self.pos) ); let inner = self.inner.take().unwrap(); Ok((inner, pos).into()) } }