1 个不稳定版本
使用旧的Rust 2015
0.1.0 | 2017年5月18日 |
---|
#7 in #workaround
在vault_client中使用
5KB
88 行
futures-error-chain
此库是futures-rs和error-chain crate之间无需额外配置即可正常工作时的解决方案
用法
就像使用error-chain crate一样,您运行future_chain!
宏,该宏将创建与error-chain crate一起工作所需的代码。
示例
#![recursion_limit = "1024"]
#[macro_use]
extern crate error_chain;
extern crate futures;
extern crate futures_cpupool;
#[macro_use]
extern crate futures_error_chain;
mod foo {
mod errors {
error_chain! {
errors {
Foo(err: String) {
description("Foo error")
display("Foo error: {}", err)
}
}
}
future_chain!{}
}
pub use self::errors::*;
use futures::future;
fn bar() -> FutureChain<String> {
future::err(ErrorKind::Foo("bar".to_owned()).into()).boxed()
}
fn bar2() -> FutureChain<String> {
future::ok("bar2".to_owned()).boxed()
}
pub fn foo() -> FutureChain<String> {
bar().and_then(|_| bar2()).chain_err(|| "foo")
}
}
mod errors {
error_chain! {
links {
Foo(::foo::Error, ::foo::ErrorKind);
}
}
}
use errors::*;
fn my_main() -> Result<()> {
use futures_cpupool::CpuPool;
use futures::Future;
let pool = CpuPool::new_num_cpus();
let f = foo::foo();
let f2 = pool.spawn(f);
f2.wait()?;
Ok(())
}
quick_main!(my_main);
依赖项
~53KB