Commit 1de96a2cc4

Chris Boesch <48591413+chrboesch@users.noreply.github.com>
2022-12-29 00:24:57
Add the two functions 'getLast' and 'getLastOrNull' to ArrayListAligned/ArrayListAlignedUnmanaged.
1 parent 8094fa5
Changed files (1)
lib/std/array_list.zig
@@ -468,6 +468,20 @@ pub fn ArrayListAligned(comptime T: type, comptime alignment: ?u29) type {
         pub fn unusedCapacitySlice(self: Self) Slice {
             return self.allocatedSlice()[self.items.len..];
         }
+
+        /// Return the last element from the list.
+        /// Asserts the list has at least one item.
+        pub fn getLast(self: *Self) T {
+            const val = self.items[self.items.len - 1];
+            return val;
+        }
+
+        /// Return the last element from the list, or
+        /// return `null` if list is empty.
+        pub fn getLastOrNull(self: *Self) ?T {
+            if (self.items.len == 0) return null;
+            return self.getLast();
+        }
     };
 }
 
@@ -913,6 +927,20 @@ pub fn ArrayListAlignedUnmanaged(comptime T: type, comptime alignment: ?u29) typ
         pub fn unusedCapacitySlice(self: Self) Slice {
             return self.allocatedSlice()[self.items.len..];
         }
+
+        /// Return the last element from the list.
+        /// Asserts the list has at least one item.
+        pub fn getLast(self: *Self) T {
+            const val = self.items[self.items.len - 1];
+            return val;
+        }
+
+        /// Return the last element from the list, or
+        /// return `null` if list is empty.
+        pub fn getLastOrNull(self: *Self) ?T {
+            if (self.items.len == 0) return null;
+            return self.getLast();
+        }
     };
 }