Created
November 12, 2025 09:01
-
-
Save magicoal-nerb/676b02597d3ab859b3e9f062ef5280c1 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| --!strict | |
| -- yet another queue implementation :P | |
| -- magicoal_nerb | |
| local Queue = {} | |
| Queue.__index = Queue | |
| export type Queue<T> = typeof(setmetatable({} :: { | |
| data: { T }, | |
| size: number, | |
| }, Queue)) | |
| function Queue.new<T>(): Queue<T> | |
| return setmetatable({ | |
| data = {}, | |
| size = 0, | |
| }, Queue) | |
| end | |
| function Queue.empty<T>(self: Queue<T>): boolean | |
| return self.size == 0 | |
| end | |
| function Queue.iterate<T>(self: Queue<T>, callback: (T, ...any) -> (), ...: any) | |
| for i, object in self.data do | |
| callback(object, ...) | |
| end | |
| end | |
| function Queue.enqueue<T>(self: Queue<T>, data: T) | |
| self.data[self.size + 1] = data | |
| self.size += 1 | |
| end | |
| function Queue.dequeue<T>(self: Queue<T>): T | |
| assert(self.size > 0, "attempted to dequeue empty queue lol") | |
| self.size -= 1 | |
| return self.data[self.size + 1] | |
| end | |
| function Queue.clear<T>(self: Queue<T>) | |
| self.size = 0 | |
| table.clear(self.data) | |
| end | |
| return Queue |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment