diff options
Diffstat (limited to 'src/vector.zig')
| -rw-r--r-- | src/vector.zig | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/vector.zig b/src/vector.zig index 2453992..492a1c2 100644 --- a/src/vector.zig +++ b/src/vector.zig @@ -25,6 +25,20 @@ pub fn Vector(comptime N: usize) type { return .{ .values = values }; } + pub fn format( + self: Self, + comptime fmt: []const u8, + options: std.fmt.FormatOptions, + writer: anytype, + ) !void { + try writer.print("Vec{}[{}", .{N, self.values[0]}); + comptime var i = 1; + inline while (i < N) : (i += 1) { + try writer.print(", {}", .{self.values[i]}); + } + try writer.writeAll("]"); + } + /// Creates a vector filled with zeroes. pub fn zeroes() Self { return comptime Self.filled(0); @@ -183,6 +197,17 @@ pub fn Vector(comptime N: usize) type { return Self{ .values = values }; } + + pub fn shrink(self: Self, comptime L: usize) Vector(L) { + if (L > N) unreachable; + + var result: Vector(L) = undefined; + comptime var i = 0; + inline while (i < L) : (i += 1) { + result.values[i] = self.values[i]; + } + return result; + } }; } |
