我正在从http://ironframework.io主页运行这个 hello world 示例代码:
extern crate iron;
use iron::prelude::*;
use iron::status;
fn main() {
fn hello_world(_: &mut Request) -> IronResult<Response> {
Ok(Response::with((status::Ok, "Hello World!")))
}
Iron::new(hello_world).http("localhost:3000").unwrap();
println!("On 3000");
}
我希望看到“On 3000”出现在标准输出上,但它从未出现。我的猜测是主线程在执行 println 之前被阻塞了。为什么会这样?
如果我使用一个临时的并在之后调用 unwrap,我会得到预期的输出:
fn main() {
fn hello_world(_: &mut Request) -> IronResult<Response> {
Ok(Response::with((status::Ok, "Hello World!")))
}
let result = Iron::new(hello_world).http("localhost:3000");
println!("On 3000");
result.unwrap();
}
为什么在返回值上调用 unwrap 时行为会发生变化?
我正在运行 rust 1.1.0 和 Iron 0.1.20。