summaryrefslogtreecommitdiffstats
path: root/third_party/rust/futures-0.1.31/src/future/option.rs
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/rust/futures-0.1.31/src/future/option.rs')
-rw-r--r--third_party/rust/futures-0.1.31/src/future/option.rs15
1 files changed, 15 insertions, 0 deletions
diff --git a/third_party/rust/futures-0.1.31/src/future/option.rs b/third_party/rust/futures-0.1.31/src/future/option.rs
new file mode 100644
index 0000000000..1b204d376a
--- /dev/null
+++ b/third_party/rust/futures-0.1.31/src/future/option.rs
@@ -0,0 +1,15 @@
+//! Definition of the `Option` (optional step) combinator
+
+use {Future, Poll, Async};
+
+impl<F, T, E> Future for Option<F> where F: Future<Item=T, Error=E> {
+ type Item = Option<T>;
+ type Error = E;
+
+ fn poll(&mut self) -> Poll<Option<T>, E> {
+ match *self {
+ None => Ok(Async::Ready(None)),
+ Some(ref mut x) => x.poll().map(|x| x.map(Some)),
+ }
+ }
+}