#future #early #functions #returning #task #error #short-hand

try_future

从基于futures的函数中提前返回的便捷简写

4个版本

使用旧的Rust 2015

0.1.3 2018年8月14日
0.1.2 2018年3月6日
0.1.1 2018年3月5日
0.1.0 2018年3月5日

#1153 in 异步


用于 noob

MIT 许可证

10KB
125

try_future

Build Status Dependency Status crates.io

这个crate旨在提供从基于futures的函数中提前返回的便捷简写。

它支持的通用模式是,在函数执行异步任务之前,它执行一些可能导致早期终止的工作,例如

  • 某些解析或验证逻辑可能失败,此时函数应立即返回错误
  • 某些本地缓存查找或其他优化可能使异步任务变得不必要,此时函数应立即返回一个值

示例

使用 impl Future<_>

#[macro_use] extern crate try_future;

fn make_request<C: Connect>(target: &str, client: &Client<C>) ->
    impl Future<Item=Response, Error=Error>
{
    let uri = try_future!(target.parse::<Uri>());

    client.get(uri).into()
}

使用 Box<Future<_>>

#[macro_use] extern crate try_future;

fn make_request<C: Connect>(target: &str, client: &Client<C>) ->
    Box<Future<Item=Response, Error=Error>>
{
    let uri = try_future_box!(target.parse::<Uri>());

    Box::new(client.get(uri))
}

依赖项

~53KB