Expand description
Foundation Deployment — trait-based, multi-provider infrastructure deploys.
WHY: Infrastructure is declared as ordinary Rust types (no YAML/TOML). A type
that implements Deployable can be deployed and
destroyed uniformly, whatever the underlying provider or transport.
WHAT: The Deployable trait — deploy/destroy are
async, returning a BoxFuture
(Pin<Box<dyn Future<Output = Result<..>> + Send>>) the caller .awaits —
plus ProviderClient (state store +
HTTP client) and the namespaced state persistence a deploy records and a
destroy reads back.
HOW: Implementors write plain Box::pin(async move { … }) — no async_trait
macro, and the trait stays object-safe (dyn Deployable works). A provider
whose transport does not fit ProviderClient’s HTTP client (e.g. Docker over
a Unix socket) may build its own client inside the future and use
ProviderClient only for state. See README.md for the full pattern and the
“unique underlying mechanics” case.
Re-exports§
pub use traits::BoxFuture;pub use traits::Deployable;pub use traits::Deploying;
Modules§
- config
- Deployment target detection and configuration.
- core
- Provider-agnostic deployment primitives.
- error
- Unified error types for the deployment system.
- json_
schema - Shared JSON Schema and
OpenAPIresponse type extraction utilities. - provider_
client - Provider Client - Central client wrapping
StateStore. - providers
- Provider-specific deployment implementations.
- resource_
info - Resource info trait for computing resource identifiers from input types.
- traits
- Deployable trait and Deploying enum for trait-based deployments.
- types
- Common deployment output types for trait-based deployments.