Closed
Description
I have this code fragment:
fn start() -> Result<()> {
let addr = "0.0.0.0:3000".parse().unwrap();
let server = Http::new().bind(&addr, || Server::new())?;
server.run()?;
Ok(())
}
When compiled it returns the following:
~> cargo build
Compiling messagebridge v0.1.0 (file:///Users/mqudsi/Projects/messagebridge)
warning: unused import: `std::env`
--> src/imessage/db.rs:4:5
|
4 | use std::env;
| ^^^^^^^^
|
= note: #[warn(unused_imports)] on by default
warning: unused import: `std::error`
--> src/imessage/db.rs:5:5
|
5 | use std::error;
| ^^^^^^^^^^
warning: unused import: `errors::*;`
--> src/incoming.rs:2:5
|
2 | use errors::*;
| ^^^^^^^^^^
error[E0271]: type mismatch resolving `<[closure@src/main.rs:75:42: 75:58] as std::ops::FnOnce<()>>::Output == std::result::Result<_, std::io::Error>`
--> src/main.rs:75:30
|
75 | let server = Http::new().bind(&addr, || Server::new())?;
| ^^^^ expected struct `Server`, found enum `std::result::Result`
|
= note: expected type `Server`
found type `std::result::Result<_, std::io::Error>`
= note: required because of the requirements on the impl of `hyper::server::NewService` for `[closure@src/main.rs:75:42: 75:58]`
error[E0271]: type mismatch resolving `<[closure@src/main.rs:75:42: 75:58] as std::ops::FnOnce<()>>::Output == std::result::Result<_, std::io::Error>`
--> src/main.rs:75:30
|
75 | let server = Http::new().bind(&addr, || Server::new())?;
| ^^^^ expected struct `Server`, found enum `std::result::Result`
|
= note: expected type `Server`
found type `std::result::Result<_, std::io::Error>`
= note: required because of the requirements on the impl of `hyper::server::NewService` for `[closure@src/main.rs:75:42: 75:58]`
error[E0271]: type mismatch resolving `<[closure@src/main.rs:75:42: 75:58] as std::ops::FnOnce<()>>::Output == std::result::Result<_, std::io::Error>`
--> src/main.rs:75:30
|
75 | let server = Http::new().bind(&addr, || Server::new())?;
| ^^^^ expected struct `Server`, found enum `std::result::Result`
|
= note: expected type `Server`
found type `std::result::Result<_, std::io::Error>`
= note: required because of the requirements on the impl of `hyper::server::NewService` for `[closure@src/main.rs:75:42: 75:58]`
error[E0271]: type mismatch resolving `<[closure@src/main.rs:75:42: 75:58] as std::ops::FnOnce<()>>::Output == std::result::Result<_, std::io::Error>`
--> src/main.rs:75:30
|
75 | let server = Http::new().bind(&addr, || Server::new())?;
| ^^^^ expected struct `Server`, found enum `std::result::Result`
|
= note: expected type `Server`
found type `std::result::Result<_, std::io::Error>`
= note: required because of the requirements on the impl of `hyper::server::NewService` for `[closure@src/main.rs:75:42: 75:58]`
error[E0599]: no method named `run` found for type `hyper::Server<[closure@src/main.rs:75:42: 75:58], _>` in the current scope
--> src/main.rs:77:12
|
77 | server.run()?;
| ^^^
|
= note: the method `run` exists but the following trait bounds were not satisfied:
`[closure@src/main.rs:75:42: 75:58] : hyper::server::NewService`
error: aborting due to 5 previous errors
error: Could not compile `messagebridge`.
To learn more, run the command again with --verbose.
This is under rustc 1.21.0 (3b72af97e 2017-10-09)