Skip to main content

packset_core/
cheap.rs

1//! Cheap-model schedule. Extract runs on compaction only.
2
3#[derive(Clone, Copy, Debug, PartialEq, Eq)]
4pub enum CheapJob {
5    Extract,
6    Fidelity,
7    LinkRewrite,
8    DueSuggest,
9}
10
11#[derive(Clone, Copy, Debug, PartialEq, Eq)]
12pub enum CheapWhen {
13    Compaction,
14    OnDemand,
15}
16
17/// Compaction owns extract and link rewrite. On-demand owns fidelity and due.
18pub fn allowed(job: CheapJob, when: CheapWhen) -> bool {
19    matches!(
20        (job, when),
21        (CheapJob::Extract, CheapWhen::Compaction)
22            | (CheapJob::LinkRewrite, CheapWhen::Compaction)
23            | (CheapJob::Fidelity, CheapWhen::OnDemand)
24            | (CheapJob::DueSuggest, CheapWhen::OnDemand)
25    )
26}
27
28#[cfg(test)]
29mod tests {
30    use super::*;
31
32    #[test]
33    fn extract_only_on_compaction() {
34        assert!(allowed(CheapJob::Extract, CheapWhen::Compaction));
35        assert!(!allowed(CheapJob::Extract, CheapWhen::OnDemand));
36        assert!(!allowed(CheapJob::Fidelity, CheapWhen::Compaction));
37        assert!(allowed(CheapJob::Fidelity, CheapWhen::OnDemand));
38    }
39}