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);
// Provided method
fn reserve_acquisition(
&self,
_attempt: &AcquisitionSpendAttempt,
) -> Result<SpendTicket, SpendRefusal> { ... }
}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)
Provided Methods§
Sourcefn reserve_acquisition(
&self,
_attempt: &AcquisitionSpendAttempt,
) -> Result<SpendTicket, SpendRefusal>
fn reserve_acquisition( &self, _attempt: &AcquisitionSpendAttempt, ) -> Result<SpendTicket, SpendRefusal>
Source costs are monetary units. Older gates refuse source attempts.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".