mirror of
https://github.com/zed-industries/zed.git
synced 2025-01-11 05:00:16 +00:00
29 lines
830 B
Rust
29 lines
830 B
Rust
// Allow tide Results to accept context like other Results do when
|
|
// using anyhow.
|
|
pub trait TideResultExt {
|
|
fn context<C>(self, cx: C) -> Self
|
|
where
|
|
C: std::fmt::Display + Send + Sync + 'static;
|
|
|
|
fn with_context<C, F>(self, f: F) -> Self
|
|
where
|
|
C: std::fmt::Display + Send + Sync + 'static,
|
|
F: FnOnce() -> C;
|
|
}
|
|
|
|
impl<T> TideResultExt for tide::Result<T> {
|
|
fn context<C>(self, cx: C) -> Self
|
|
where
|
|
C: std::fmt::Display + Send + Sync + 'static,
|
|
{
|
|
self.map_err(|e| tide::Error::new(e.status(), e.into_inner().context(cx)))
|
|
}
|
|
|
|
fn with_context<C, F>(self, f: F) -> Self
|
|
where
|
|
C: std::fmt::Display + Send + Sync + 'static,
|
|
F: FnOnce() -> C,
|
|
{
|
|
self.map_err(|e| tide::Error::new(e.status(), e.into_inner().context(f())))
|
|
}
|
|
}
|