pub struct SpendPolicy {
pub velocity: Option<VelocityLimit>,
pub category_caps_cents: BTreeMap<String, u64>,
pub merchant_allow: BTreeSet<String>,
pub merchant_deny: BTreeSet<String>,
pub quiet_windows: Vec<QuietWindow>,
}Expand description
支出策略:总预算之外的确定性策略维度,挂在委托上随注册落审计。
Default = 无附加策略——行为与本模块引入之前完全一致(序列化也不落
policy 字段,既有 WAL 行逐字节不漂移;四卖点场景回归锁定)。
Fields§
§velocity: Option<VelocityLimit>速率限制(None = 不限)。
category_caps_cents: BTreeMap<String, u64>类目 → 上限(分)。不在表内的类目 = 无类目预算,fail-open(总预算仍管); 上限 0 = 禁该类目。
merchant_allow: BTreeSet<String>商户白名单(空 = 不设白名单;非空时未列商户一律拒)。
merchant_deny: BTreeSet<String>商户黑名单(deny 优先:同时在两份名单 = 拒)。
quiet_windows: Vec<QuietWindow>禁止时段(绝对 Unix 秒,半开)。
Implementations§
Source§impl SpendPolicy
impl SpendPolicy
Sourcepub fn validate(&self) -> Result<(), CoreError>
pub fn validate(&self) -> Result<(), CoreError>
注册前校验(fail-closed:任何一项不过就拒收,由
Gate::register_delegation 强制调用)。
Sourcepub fn merchant_verdict(&self, merchant_id: &str) -> Option<MerchantVerdict>
pub fn merchant_verdict(&self, merchant_id: &str) -> Option<MerchantVerdict>
商户是否被名单拒绝(deny 优先;allow 空 = 不设白名单)。
返回 Some(原因) 表示拒,None 表示名单不拦。
Trait Implementations§
Source§impl Clone for SpendPolicy
impl Clone for SpendPolicy
Source§fn clone(&self) -> SpendPolicy
fn clone(&self) -> SpendPolicy
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for SpendPolicy
impl Debug for SpendPolicy
Source§impl Default for SpendPolicy
impl Default for SpendPolicy
Source§fn default() -> SpendPolicy
fn default() -> SpendPolicy
Returns the “default value” for a type. Read more
Source§impl<'de> Deserialize<'de> for SpendPolicy
impl<'de> Deserialize<'de> for SpendPolicy
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
impl Eq for SpendPolicy
Source§impl PartialEq for SpendPolicy
impl PartialEq for SpendPolicy
Source§impl Serialize for SpendPolicy
impl Serialize for SpendPolicy
impl StructuralPartialEq for SpendPolicy
Auto Trait Implementations§
impl Freeze for SpendPolicy
impl RefUnwindSafe for SpendPolicy
impl Send for SpendPolicy
impl Sync for SpendPolicy
impl Unpin for SpendPolicy
impl UnsafeUnpin for SpendPolicy
impl UnwindSafe for SpendPolicy
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more