diff --git a/Cargo.toml b/Cargo.toml index c485d91..6fefd67 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "aerosol" -version = "1.0.0-alpha.3" +version = "1.0.0-alpha.4" authors = ["Diggory Blake "] edition = "2018" description = "Simple dependency injection for Rust" @@ -13,7 +13,7 @@ all-features = true [features] default = [] async = ["async-trait"] -axum = ["dep:axum", "async", "tracing", "thiserror", "anyhow"] +axum = ["dep:axum", "async", "tracing", "thiserror"] [dependencies] parking_lot = "0.12.1" @@ -22,7 +22,7 @@ async-trait = { version = "0.1", optional = true } axum = { version = "0.6", optional = true } tracing = { version = "0.1", optional = true } thiserror = { version = "1.0", optional = true } -anyhow = { version = "1.0", optional = true } +anyhow = { version = "1.0" } [dev-dependencies] tokio = { version = "1.0", features = ["macros"] } diff --git a/src/async_constructible.rs b/src/async_constructible.rs index 4ba3c0e..2a66727 100644 --- a/src/async_constructible.rs +++ b/src/async_constructible.rs @@ -1,4 +1,4 @@ -use std::{error::Error, sync::Arc}; +use std::sync::Arc; use async_trait::async_trait; @@ -14,7 +14,7 @@ use crate::{ #[async_trait] pub trait AsyncConstructible: Sized { /// Error type for when resource fails to be constructed. - type Error: Error + Send + Sync; + type Error: Into + Send + Sync; /// Construct the resource with the provided application state. async fn construct_async(aero: &Aerosol) -> Result; } @@ -32,7 +32,7 @@ impl AsyncConstructible for T { #[async_trait] pub trait IndirectlyAsyncConstructible: Sized { /// Error type for when resource fails to be constructed. - type Error: Error + Send + Sync; + type Error: Into + Send + Sync; /// Construct the resource with the provided application state. async fn construct_async(aero: &Aerosol) -> Result; } diff --git a/src/resource.rs b/src/resource.rs index 7515546..9c07a97 100644 --- a/src/resource.rs +++ b/src/resource.rs @@ -1,7 +1,4 @@ -use std::{ - any::{type_name, Any}, - error::Error, -}; +use std::any::{type_name, Any}; /// Bound on the types that can be used as an aerosol resource. pub trait Resource: Any + Send + Sync + Clone {} @@ -15,10 +12,10 @@ pub(crate) fn unwrap_resource(opt: Option) -> T { } } -pub(crate) fn unwrap_constructed(res: Result) -> U { +pub(crate) fn unwrap_constructed(res: Result>) -> U { match res { Ok(x) => x, - Err(e) => panic!("Failed to construct `{}`: {}", type_name::(), e), + Err(e) => panic!("Failed to construct `{}`: {}", type_name::(), e.into()), } } diff --git a/src/sync_constructible.rs b/src/sync_constructible.rs index 721aa44..0ece9a6 100644 --- a/src/sync_constructible.rs +++ b/src/sync_constructible.rs @@ -1,4 +1,4 @@ -use std::{error::Error, sync::Arc}; +use std::sync::Arc; use crate::{ resource::{unwrap_constructed, Resource}, @@ -9,7 +9,7 @@ use crate::{ /// Implemented for values which can be constructed from other resources. pub trait Constructible: Sized { /// Error type for when resource fails to be constructed. - type Error: Error + Send + Sync; + type Error: Into + Send + Sync; /// Construct the resource with the provided application state. fn construct(aero: &Aerosol) -> Result; } @@ -17,7 +17,7 @@ pub trait Constructible: Sized { /// Automatically implemented for values which can be indirectly constructed from other resources. pub trait IndirectlyConstructible: Sized { /// Error type for when resource fails to be constructed. - type Error: Error + Send + Sync; + type Error: Into + Send + Sync; /// Construct the resource with the provided application state. fn construct(aero: &Aerosol) -> Result; }