cardinal_base/
provider.rs

1use crate::context::CardinalContext;
2use async_trait::async_trait;
3use cardinal_errors::CardinalError;
4
5#[derive(Debug, Clone, Copy, PartialEq, Eq)]
6pub enum ProviderScope {
7    Singleton,
8    Transient,
9}
10
11pub type DefaultProviderError = Box<dyn std::error::Error + Send + Sync + 'static>;
12
13#[async_trait]
14pub trait Provider: Send + Sync + Sized + 'static {
15    async fn provide(ctx: &CardinalContext) -> Result<Self, CardinalError>;
16}