【发布时间】:2015-10-13 04:40:18
【问题描述】:
我在一个需要交互查询的大型文本文件周围有一个简单的休息类皮肤。它可能涉及繁重的计算,所以我使用了 rust。我已经用铁制作了一个简单的宁静皮肤。请注意,我没有对生锈做太多事情。这只是在本地主机上运行。
pub fn query<'a>(parsed: &'a Parsed, context:&Context) -> {
// parsed.keys is a hash containing config informtion
// context is what I query
let local_port = format!("{}:{}", "localhost", parsed.keys[AS_SERVER]);
fn test_connect<'a>(r: &'a mut Request, c:&'a Context) -> IronResult<Response> {
let url = r.url.to_string();
let result = // some logic
Ok(Response::with((status::Ok, format!("requested=\"{}:{}\"\n", url, result))))
}
let mut router = Router::new();
router.get("*", move |r: &mut Request| test_connect(r, &context));
let connection_status = Iron::new(router).http(&local_port[..]);
connection_status.ok().expect("could not connect");
}
现在我的问题是如何让控制权退出监听循环
Iron::new(router).http(&local_port[..]);
我只想说curl http://localhost/done
并让监听函数退出,然后进行一些日志记录,然后继续。这有可能做到这一点吗?我尝试过恐慌,但即使这样也不会退出监听循环?
我尝试返回类似Err(IronError::new(StringError(url),status::ServiceUnavailable))
status::ServiceUnavailable 只是随机的 - 它需要一些东西:我知道它在语义上不正确,不知道该使用什么。但是该错误上没有任何处理程序,因此它会默默消失。
我想我会用 aftermiddleware 设置一些东西,但我不知道是什么?
【问题讨论】: