pub trait SpendGate: Send + Sync {
// Required methods
fn reserve(
&self,
attempt: &SpendAttempt,
) -> Result<SpendTicket, SpendRefusal>;
fn settle(&self, ticket: SpendTicket, charge: &Charge);
fn release(&self, ticket: SpendTicket);
}Expand description
A reservation must be durable before returning success. Settlement failures must retain liability. Implementations must not panic.
Required Methods§
fn reserve(&self, attempt: &SpendAttempt) -> Result<SpendTicket, SpendRefusal>
fn settle(&self, ticket: SpendTicket, charge: &Charge)
fn release(&self, ticket: SpendTicket)
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".