diff --git a/src/datastructures/queue.rs b/src/datastructures/queue.rs index bdd2da1..2e3c110 100644 --- a/src/datastructures/queue.rs +++ b/src/datastructures/queue.rs @@ -137,6 +137,28 @@ impl FilePointer Some(queue) } + pub fn is_empty(self, reader: &impl ReaderTrait) -> bool { + self.length(reader) == 0 + } + + pub fn last(self, reader: &impl ReaderTrait) -> Option { + let this = reader.read(self); + + if this.length.get() == 0 { + return None; + } + + let mut next = this.head; + + for _ in 1..this.length.get() { + // println!("free [{i}] {ptr:?}"); + + next = *reader.read(field_ptr!(next, QueueElement, next)); + } + + Some(*reader.read(field_ptr!(next, QueueElement, data))) + } + pub fn length(self, reader: &impl ReaderTrait) -> u64 { reader.read(field_ptr!(self, Queue, length)).get() }