Skip to main content

Service

Derive Macro Service 

Source
#[derive(Service)]
Expand description

Derive macro for implementing the Service trait.

Generates a Service implementation that resolves all fields via ServiceProvider::get_service().

§Example

#[derive(Service)]
pub struct MyHandler {
    http: Arc<HttpClient>,
    metadata: Arc<MetadataRepository>,
}

Generates:

impl Service for MyHandler {
    type Error = ServiceError;

    async fn from_services(
        services: &ServiceProvider,
    ) -> Result<Self, Report<Self::Error>> {
        Ok(Self {
            http: services.get_service().await?,
            metadata: services.get_service().await?,
        })
    }
}