extern crate futures;
extern crate futures01;
extern crate is_impl;
use crate::futures::compat::Future01CompatExt;
use crate::futures::future::Future as Future03;
use crate::futures::FutureExt;
use crate::futures::TryFutureExt;
use crate::futures01::future::Future as Future01;
use is_impl::*;
fn spawn<E>(_value: impl futures01::Future<Item = E>) {}
fn request(_test: &str) -> impl futures01::Future<Item = i32, Error = ()> {
futures01::future::ok(1)
}
fn transform(
x: impl futures::future::Future<Output = i32>,
) -> impl futures::future::Future<Output = i32> {
x.map(|value| value * 2)
}
fn main() {
let req = request("something");
let res = transform(req.compat().into_future().map(|x| x.unwrap()))
.unit_error()
.compat();
spawn(res);
let req = is_impl!(dyn Future01<Item=i32, Error=()>, request("something"));
let new_future = is_impl!(
dyn Future03<Output = i32>,
req.compat().into_future().map(|x| x.unwrap())
);
let transformed = is_impl!(dyn Future03<Output = i32>, transform(new_future));
let res = is_impl!(dyn Future01<Item=i32, Error=()>, transformed
.unit_error()
.compat());
spawn(res);
}