mirror of
https://github.com/TECHNOFAB11/aerosol.git
synced 2025-12-10 23:20:06 +01:00
refactor: use eyre instead of anyhow
This commit is contained in:
parent
698dfa31e6
commit
8b159d2b56
6 changed files with 21 additions and 21 deletions
|
|
@ -26,7 +26,7 @@ axum-extra = { version = "0.9.3", optional = true, features = [
|
|||
] }
|
||||
tracing = { version = "0.1", optional = true }
|
||||
thiserror = { version = "1.0", optional = true }
|
||||
anyhow = { version = "1.0" }
|
||||
eyre = { version = "0.6.12" }
|
||||
frunk = "0.4.2"
|
||||
|
||||
[dev-dependencies]
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ use crate::{
|
|||
#[async_trait]
|
||||
pub trait AsyncConstructible: Sized + Any + Send + Sync {
|
||||
/// Error type for when resource fails to be constructed.
|
||||
type Error: Into<anyhow::Error> + Send + Sync;
|
||||
type Error: Into<eyre::Error> + Send + Sync;
|
||||
/// Construct the resource with the provided application state.
|
||||
async fn construct_async(aero: &Aero) -> Result<Self, Self::Error>;
|
||||
/// Called after construction with the concrete resource to allow the callee
|
||||
|
|
@ -48,7 +48,7 @@ impl<T: Constructible> AsyncConstructible for T {
|
|||
#[async_trait]
|
||||
pub trait IndirectlyAsyncConstructible: Sized + Any + Send + Sync {
|
||||
/// Error type for when resource fails to be constructed.
|
||||
type Error: Into<anyhow::Error> + Send + Sync;
|
||||
type Error: Into<eyre::Error> + Send + Sync;
|
||||
/// Construct the resource with the provided application state.
|
||||
async fn construct_async(aero: &Aero) -> Result<Self, Self::Error>;
|
||||
/// Called after construction with the concrete resource to allow the callee
|
||||
|
|
@ -118,12 +118,12 @@ impl<T: Resource + IndirectlyAsyncConstructible> AsyncConstructibleResource for
|
|||
#[async_trait]
|
||||
pub trait AsyncConstructibleResourceList: ResourceList {
|
||||
/// Construct every resource in this list in the provided aerosol instance
|
||||
async fn construct_async<R: ResourceList>(aero: &Aero<R>) -> anyhow::Result<()>;
|
||||
async fn construct_async<R: ResourceList>(aero: &Aero<R>) -> eyre::Result<()>;
|
||||
}
|
||||
|
||||
#[async_trait]
|
||||
impl AsyncConstructibleResourceList for HNil {
|
||||
async fn construct_async<R: ResourceList>(_aero: &Aero<R>) -> anyhow::Result<()> {
|
||||
async fn construct_async<R: ResourceList>(_aero: &Aero<R>) -> eyre::Result<()> {
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
|
@ -132,7 +132,7 @@ impl AsyncConstructibleResourceList for HNil {
|
|||
impl<H: AsyncConstructibleResource, T: AsyncConstructibleResourceList>
|
||||
AsyncConstructibleResourceList for HCons<H, T>
|
||||
{
|
||||
async fn construct_async<R: ResourceList>(aero: &Aero<R>) -> anyhow::Result<()> {
|
||||
async fn construct_async<R: ResourceList>(aero: &Aero<R>) -> eyre::Result<()> {
|
||||
aero.try_init_async::<H>().await.map_err(Into::into)?;
|
||||
T::construct_async(aero).await
|
||||
}
|
||||
|
|
@ -201,7 +201,7 @@ impl<R: ResourceList> Aero<R> {
|
|||
|
||||
/// Convert into a different variant of the Aero type. Any missing required resources
|
||||
/// will be automatically asynchronously constructed.
|
||||
pub async fn try_construct_remaining_async<R2, I>(self) -> anyhow::Result<Aero<R2>>
|
||||
pub async fn try_construct_remaining_async<R2, I>(self) -> eyre::Result<Aero<R2>>
|
||||
where
|
||||
R2: Sculptor<R, I> + ResourceList,
|
||||
<R2 as Sculptor<R, I>>::Remainder: AsyncConstructibleResourceList,
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ pub enum DependencyError {
|
|||
name: &'static str,
|
||||
/// Error returned by the resource constructor
|
||||
#[source]
|
||||
source: anyhow::Error,
|
||||
source: eyre::Error,
|
||||
},
|
||||
}
|
||||
|
||||
|
|
@ -52,7 +52,7 @@ impl DependencyError {
|
|||
name: type_name::<T>(),
|
||||
}
|
||||
}
|
||||
pub(crate) fn failed_to_construct<T>(error: impl Into<anyhow::Error>) -> Self {
|
||||
pub(crate) fn failed_to_construct<T>(error: impl Into<eyre::Error>) -> Self {
|
||||
Self::FailedToConstruct {
|
||||
name: type_name::<T>(),
|
||||
source: error.into(),
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@
|
|||
//! # struct MagicNumber(i32);
|
||||
//! # trait EmailSender: Send + Sync { fn send(&self) {} }
|
||||
//! # impl EmailSender for PostmarkClient {}
|
||||
//! # impl PostmarkClient { fn new() -> anyhow::Result<Self> { Ok(Self) }}
|
||||
//! # impl PostmarkClient { fn new() -> eyre::Result<Self> { Ok(Self) }}
|
||||
//! use aerosol::{Aero, Constructible};
|
||||
//!
|
||||
//! // Here, we can list all the things we want to guarantee are in
|
||||
|
|
@ -91,7 +91,7 @@
|
|||
//! // The `Constructible` trait can be implemented to allow resources to be automatically
|
||||
//! // constructed.
|
||||
//! impl Constructible for PostmarkClient {
|
||||
//! type Error = anyhow::Error;
|
||||
//! type Error = eyre::Error;
|
||||
//!
|
||||
//! fn construct(aero: &Aero) -> Result<Self, Self::Error> {
|
||||
//! PostmarkClient::new(/* initialize using environment variables */)
|
||||
|
|
@ -109,7 +109,7 @@
|
|||
//! }
|
||||
//!
|
||||
//! impl Constructible for ConnectionPool {
|
||||
//! type Error = anyhow::Error;
|
||||
//! type Error = eyre::Error;
|
||||
//! fn construct(aero: &Aero) -> Result<Self, Self::Error> {
|
||||
//! // ...
|
||||
//! # Ok(ConnectionPool)
|
||||
|
|
@ -117,7 +117,7 @@
|
|||
//! }
|
||||
//!
|
||||
//! impl Constructible for MessageQueue {
|
||||
//! type Error = anyhow::Error;
|
||||
//! type Error = eyre::Error;
|
||||
//! fn construct(aero: &Aero) -> Result<Self, Self::Error> {
|
||||
//! // ...
|
||||
//! # Ok(MessageQueue)
|
||||
|
|
|
|||
|
|
@ -36,14 +36,14 @@ pub(crate) fn unwrap_resource<T: Resource>(opt: Option<T>) -> T {
|
|||
}
|
||||
}
|
||||
|
||||
pub(crate) fn unwrap_constructed<T: Resource, U>(res: Result<U, impl Into<anyhow::Error>>) -> U {
|
||||
pub(crate) fn unwrap_constructed<T: Resource, U>(res: Result<U, impl Into<eyre::Error>>) -> U {
|
||||
match res {
|
||||
Ok(x) => x,
|
||||
Err(e) => panic!("Failed to construct `{}`: {}", type_name::<T>(), e.into()),
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn unwrap_constructed_hlist<T, U>(res: Result<U, impl Into<anyhow::Error>>) -> U {
|
||||
pub(crate) fn unwrap_constructed_hlist<T, U>(res: Result<U, impl Into<eyre::Error>>) -> U {
|
||||
match res {
|
||||
Ok(x) => x,
|
||||
Err(e) => panic!(
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ use crate::{
|
|||
/// Implemented for values which can be constructed from other resources.
|
||||
pub trait Constructible: Sized + Any + Send + Sync {
|
||||
/// Error type for when resource fails to be constructed.
|
||||
type Error: Into<anyhow::Error> + Send + Sync;
|
||||
type Error: Into<eyre::Error> + Send + Sync;
|
||||
/// Construct the resource with the provided application state.
|
||||
fn construct(aero: &Aero) -> Result<Self, Self::Error>;
|
||||
|
||||
|
|
@ -29,7 +29,7 @@ pub trait Constructible: Sized + Any + Send + Sync {
|
|||
/// Automatically implemented for values which can be indirectly constructed from other resources.
|
||||
pub trait IndirectlyConstructible: Sized + Any + Send + Sync {
|
||||
/// Error type for when resource fails to be constructed.
|
||||
type Error: Into<anyhow::Error> + Send + Sync;
|
||||
type Error: Into<eyre::Error> + Send + Sync;
|
||||
/// Construct the resource with the provided application state.
|
||||
fn construct(aero: &Aero) -> Result<Self, Self::Error>;
|
||||
/// Called after construction with the concrete resource to allow the callee
|
||||
|
|
@ -94,11 +94,11 @@ impl<T: Resource + IndirectlyConstructible> ConstructibleResource for T {}
|
|||
/// Automatically implemented for resource lists where every resource can be constructed.
|
||||
pub trait ConstructibleResourceList: ResourceList {
|
||||
/// Construct every resource in this list in the provided aerosol instance
|
||||
fn construct<R: ResourceList>(aero: &Aero<R>) -> anyhow::Result<()>;
|
||||
fn construct<R: ResourceList>(aero: &Aero<R>) -> eyre::Result<()>;
|
||||
}
|
||||
|
||||
impl ConstructibleResourceList for HNil {
|
||||
fn construct<R: ResourceList>(_aero: &Aero<R>) -> anyhow::Result<()> {
|
||||
fn construct<R: ResourceList>(_aero: &Aero<R>) -> eyre::Result<()> {
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
|
@ -106,7 +106,7 @@ impl ConstructibleResourceList for HNil {
|
|||
impl<H: ConstructibleResource, T: ConstructibleResourceList> ConstructibleResourceList
|
||||
for HCons<H, T>
|
||||
{
|
||||
fn construct<R: ResourceList>(aero: &Aero<R>) -> anyhow::Result<()> {
|
||||
fn construct<R: ResourceList>(aero: &Aero<R>) -> eyre::Result<()> {
|
||||
aero.try_init::<H>().map_err(Into::into)?;
|
||||
T::construct(aero)
|
||||
}
|
||||
|
|
@ -175,7 +175,7 @@ impl<R: ResourceList> Aero<R> {
|
|||
|
||||
/// Convert into a different variant of the Aero type. Any missing required resources
|
||||
/// will be automatically constructed.
|
||||
pub fn try_construct_remaining<R2, I>(self) -> anyhow::Result<Aero<R2>>
|
||||
pub fn try_construct_remaining<R2, I>(self) -> eyre::Result<Aero<R2>>
|
||||
where
|
||||
R2: Sculptor<R, I> + ResourceList,
|
||||
<R2 as Sculptor<R, I>>::Remainder: ConstructibleResourceList,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue