krabka_verified/
diskless.rs1use creusot_std::prelude::*;
4
5#[krabka_macros::model_type]
7pub struct DisklessTrimDecision {
8 pub should_trim: bool,
9 pub target: i64,
10}
11
12#[krabka_macros::model_type]
14pub enum DisklessBatchStep {
15 Invalid,
16 Skip(usize),
17 Start(usize),
18 Continue(usize),
19 Stop,
20}
21
22#[krabka_macros::model_type(proof(std::clone::Clone, Copy))]
24pub struct DisklessRetentionPolicy {
25 pub retention_ms: Option<i64>,
27 pub retention_bytes: Option<u64>,
29 pub log_start_offset: i64,
31 pub now_ms: i64,
32}
33
34mod logical_range;
35pub use logical_range::{
36 diskless_logical_range, diskless_object_reclaimable, diskless_retention_prefix,
37};
38#[cfg(creusot)]
39pub use logical_range::{expirable, indexed_bytes, size_debt_before};
40
41mod trim_decision;
42pub use trim_decision::{diskless_batch_step, diskless_span_extension, diskless_trim_decision};
43
44#[cfg(test)]
45mod tests;