summaryrefslogtreecommitdiffstats
path: root/tokio-fs/src/file/metadata.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tokio-fs/src/file/metadata.rs')
-rw-r--r--tokio-fs/src/file/metadata.rs17
1 files changed, 10 insertions, 7 deletions
diff --git a/tokio-fs/src/file/metadata.rs b/tokio-fs/src/file/metadata.rs
index 7a3c5ef9..a5aa4683 100644
--- a/tokio-fs/src/file/metadata.rs
+++ b/tokio-fs/src/file/metadata.rs
@@ -1,8 +1,11 @@
use super::File;
-use futures::{try_ready, Future, Poll};
use std::fs::File as StdFile;
use std::fs::Metadata;
+use std::future::Future;
use std::io;
+use std::pin::Pin;
+use std::task::Context;
+use std::task::Poll;
const POLL_AFTER_RESOLVE: &str = "Cannot poll MetadataFuture after it resolves";
@@ -23,13 +26,13 @@ impl MetadataFuture {
}
impl Future for MetadataFuture {
- type Item = (File, Metadata);
- type Error = io::Error;
+ type Output = io::Result<(File, Metadata)>;
- fn poll(&mut self) -> Poll<Self::Item, Self::Error> {
- let metadata = try_ready!(crate::blocking_io(|| StdFile::metadata(self.std())));
+ fn poll(self: Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll<Self::Output> {
+ let inner = Pin::get_mut(self);
+ let metadata = ready!(crate::blocking_io(|| StdFile::metadata(inner.std())))?;
- let file = self.file.take().expect(POLL_AFTER_RESOLVE);
- Ok((file, metadata).into())
+ let file = inner.file.take().expect(POLL_AFTER_RESOLVE);
+ Poll::Ready(Ok((file, metadata).into()))
}
}