add last method to queue
This commit is contained in:
parent
e8f243e854
commit
fe9b7df81f
@ -137,6 +137,28 @@ impl<T: FromBytes + FromZeroes + AsBytes + Unaligned + Clone + Copy> FilePointer
|
||||
Some(queue)
|
||||
}
|
||||
|
||||
pub fn is_empty(self, reader: &impl ReaderTrait) -> bool {
|
||||
self.length(reader) == 0
|
||||
}
|
||||
|
||||
pub fn last(self, reader: &impl ReaderTrait) -> Option<T> {
|
||||
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<T>, next));
|
||||
}
|
||||
|
||||
Some(*reader.read(field_ptr!(next, QueueElement<T>, data)))
|
||||
}
|
||||
|
||||
pub fn length(self, reader: &impl ReaderTrait) -> u64 {
|
||||
reader.read(field_ptr!(self, Queue<T>, length)).get()
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user