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}