mirror of
https://github.com/tokio-rs/tokio.git
synced 2026-08-27 00:00:12 +02:00
tokio-fs: add tokio_fs::metadata (#433)
This commit is contained in:
committed by
Carl Lerche
parent
b2f77dcebe
commit
04a4bfd455
+23
-1
@@ -31,11 +31,33 @@ pub use stdin::{stdin, Stdin};
|
||||
pub use stdout::{stdout, Stdout};
|
||||
pub use stderr::{stderr, Stderr};
|
||||
|
||||
use futures::Poll;
|
||||
use futures::{Future, Poll};
|
||||
use futures::Async::*;
|
||||
|
||||
use std::fs::{self, Metadata};
|
||||
use std::io;
|
||||
use std::io::ErrorKind::{Other, WouldBlock};
|
||||
use std::path::PathBuf;
|
||||
|
||||
/// Queries the file system metadata for a path
|
||||
pub fn metadata(path: PathBuf) -> MetadataFuture {
|
||||
MetadataFuture { path }
|
||||
}
|
||||
|
||||
/// Future returned by `metadata`
|
||||
#[derive(Debug)]
|
||||
pub struct MetadataFuture {
|
||||
path: PathBuf,
|
||||
}
|
||||
|
||||
impl Future for MetadataFuture {
|
||||
type Item = Metadata;
|
||||
type Error = io::Error;
|
||||
|
||||
fn poll(&mut self) -> Poll<Self::Item, Self::Error> {
|
||||
blocking_io(|| fs::metadata(&self.path))
|
||||
}
|
||||
}
|
||||
|
||||
fn blocking_io<F, T>(f: F) -> Poll<T, io::Error>
|
||||
where F: FnOnce() -> io::Result<T>,
|
||||
|
||||
Reference in New Issue
Block a user