Core Domain Service (Rust)
Overview
Serviços de domínio em modules::<bc>::domain::services::<name>.rs — struct ou impl block com lógica pura, sem Axum/sqlx/Tokio I/O.
Guidelines
- Apenas em
domain/services/do BC — nunca emapplication/ouinfrastructure/. - Sem dependências de framework, HTTP, banco ou async I/O.
- Preferir funções/métodos determinísticos recebendo entidades/VOs e retornando
Resultou tipos simples. - Nomear por intenção:
CustomerUniquenessPolicy,OrderTotalCalculator,CpfSpecification. - Exportar via
domain/services/mod.rs— path lógicodomain::CustomerUniquenessPolicyoudomain::services::CustomerUniquenessPolicy(re-export flat preferido).
Workflow
- Confirmar que a regra não cabe em uma única entidade/VO.
- Implementar em
domain/services/<snake>.rs. - Re-export em
domain/services/mod.rse opcionalmentedomain/mod.rs. - Consumir a partir de use cases (
core-use-case-rs). - Testes unitários —
test-unit-rs.
References
references/domain-service-pattern-rs.md../config-shared-core-rs/references/rust-namespace-layout.md
Global Standards
- Consultar
../skills-standards.mdseção Rust.