qubit_fs/directory/
delete_outcome.rs1#[derive(Clone, Copy, Debug, Eq, PartialEq)]
22pub struct DeleteOutcome {
23 already_missing: bool,
25 deleted_entries: Option<u64>,
27}
28
29impl DeleteOutcome {
30 #[inline]
33 #[must_use]
34 pub const fn new(already_missing: bool) -> Self {
35 Self {
36 already_missing,
37 deleted_entries: None,
38 }
39 }
40
41 #[inline]
43 #[must_use]
44 pub const fn already_missing(self) -> bool {
45 self.already_missing
46 }
47
48 #[inline]
50 #[must_use]
51 pub const fn with_deleted_entries(mut self, count: u64) -> Self {
52 self.deleted_entries = Some(count);
53 self
54 }
55
56 #[inline]
58 #[must_use]
59 pub const fn deleted_entries(self) -> Option<u64> {
60 self.deleted_entries
61 }
62}
63
64#[cfg(test)]
65mod tests {
66 use std::hint::black_box;
67
68 use super::DeleteOutcome;
69
70 #[test]
71 fn outcome_accessors_are_executed_at_runtime() {
72 let constructor: fn(bool) -> DeleteOutcome = black_box(DeleteOutcome::new);
73 let with_entries: fn(DeleteOutcome, u64) -> DeleteOutcome = black_box(DeleteOutcome::with_deleted_entries);
74 let already_missing: fn(DeleteOutcome) -> bool = black_box(DeleteOutcome::already_missing);
75 let deleted_entries: fn(DeleteOutcome) -> Option<u64> = black_box(DeleteOutcome::deleted_entries);
76
77 let outcome = with_entries(constructor(true), 2);
78 assert!(already_missing(outcome));
79 assert_eq!(Some(2), deleted_entries(outcome));
80 }
81}