1#[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
17pub 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}