Skip to content

Commit 768d7dd

Browse files
committed
Add future::err_into implementation
1 parent 3437b24 commit 768d7dd

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ Rust nightly-2019-02-19 for async_await, await_macro...
1616
Future
1717

1818
- [x] future::and_then
19-
- [ ] future::err_into
19+
- [x] future::err_into
2020
- [x] future::flatten
2121
- [ ] future::flatten_stream
2222
- [x] future::inspect

src/future.rs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,13 @@ pub async fn inspect<Fut, F>(future: Fut, f: F) -> Fut::Output
8585
future_result
8686
}
8787

88+
pub async fn err_into<Fut, T, E, U>(future: Fut) -> Result<T,U>
89+
where Fut: Future<Output = Result<T,E>>,
90+
E: Into<U>,
91+
{
92+
let future_result = await!(future);
93+
future_result.map_err(Into::into)
94+
}
8895

8996
#[cfg(test)]
9097
mod tests {
@@ -170,4 +177,14 @@ mod tests {
170177
assert_eq!(await!(new_future), 1);
171178
});
172179
}
180+
181+
#[test]
182+
fn test_err_into() {
183+
executor::block_on(async {
184+
let future_err_u8 = ready(Err::<(), u8>(1));
185+
let future_err_i32 = err_into::<_, _, _, i32>(future_err_u8);
186+
187+
assert_eq!(await!(future_err_i32), Err::<(), i32>(1));
188+
});
189+
}
173190
}

0 commit comments

Comments
 (0)