diff --git a/src/datastructures/queue.rs b/src/datastructures/queue.rs index 29f0e19..5cdfdbd 100644 --- a/src/datastructures/queue.rs +++ b/src/datastructures/queue.rs @@ -24,6 +24,7 @@ impl Slabable fo } } +// TODO: make this return the bare Queue to avoid additional allocations impl Queue { pub fn new(transaction: &mut TransactionHandle) -> FilePointer> { let (queue, data) = transaction.allocate(); @@ -276,7 +277,13 @@ impl FilePointer } pub fn last(self, reader: &impl ReaderTrait) -> Option { - self.get(reader, self.length(reader) - 1) + let length = self.length(reader); + + if length == 0 { + None + } else { + self.get(reader, length - 1) + } } pub fn length(self, reader: &impl ReaderTrait) -> u64 {