diff --git a/Makefile b/Makefile index a9e37da..d42aebd 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,5 @@ -CARGO = cargo +CARGO = cargo +$(TOOLCHAIN) +TOOLCHAIN = nightly .PHONY: all bench build check clean doc install publish run test update diff --git a/cargo.out b/cargo.out index d2607d1..1f5d6f4 100644 --- a/cargo.out +++ b/cargo.out @@ -1,24 +1,11 @@ - Compiling futuretest v0.1.0 (file:///mnt/c/Users/Mahmoud/git/futuretest) -error[E0271]: type mismatch resolving ` as futures::IntoFuture>::Error == &str` - --> src/main.rs:13:10 - | -13 | .and_then(|_| - | ^^^^^^^^ expected struct `std::string::String`, found &str - | - = note: expected type `std::string::String` - found type `&str` - -error[E0271]: type mismatch resolving ` as futures::IntoFuture>::Error == &str` - --> src/main.rs:20:10 - | -20 | core.run(f).unwrap(); - | ^^^ expected struct `std::string::String`, found &str - | - = note: expected type `std::string::String` - found type `&str` - = note: required because of the requirements on the impl of `futures::Future` for `futures::AndThen, [closure@src/main.rs:11:18: 11:43]>, [closure@src/main.rs:12:14: 12:67]>, futures::FutureResult<(), std::string::String>, [closure@src/main.rs:13:19: 16:14]>` - -error: aborting due to 2 previous errors + Compiling futuretest v0.1.0 (file:///mnt/d/GIT/futuretest) +error[E0554]: #![feature] may not be used on the stable release channel + --> src/main.rs:1:1 + | +1 | #![feature(conservative_impl_trait)] + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +error: aborting due to previous error error: Could not compile `futuretest`. diff --git a/src/main.rs b/src/main.rs index fe2d780..4f5ed0a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,3 +1,5 @@ +#![feature(conservative_impl_trait)] + extern crate futures; extern crate tokio_core; use futures::future::{self}; @@ -7,15 +9,11 @@ use tokio_core::reactor::Core; fn main() { let mut core = Core::new().expect("Failed to initialize tokio_core reactor!"); - let f = future::result(Ok(())) - .map_err(|()| "&'static str error") - .map(|_| future::result(Err("another &'static str error"))) - .and_then(|_| - future::result(Ok(()) - .map_err(|()| "String error".to_owned()) - ) - ) - ; + let f = create_future(); core.run(f).unwrap(); } + +fn create_future() -> impl Future { + return future::ok(Ok(())); +}