mirror of
https://github.com/tokio-rs/tokio.git
synced 2026-08-27 00:00:12 +02:00
38 lines
783 B
Rust
38 lines
783 B
Rust
use super::File;
|
|
|
|
use futures::{Future, Poll};
|
|
|
|
use std::io;
|
|
|
|
/// Future returned by `File::seek`
|
|
#[derive(Debug)]
|
|
pub struct SeekFuture {
|
|
inner: Option<File>,
|
|
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<Self::Item, Self::Error> {
|
|
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())
|
|
}
|
|
}
|