Another do-while loop:
test "do-while" {
var i: u8 = 'a';
var result: std.ArrayListUnmanaged(u8) = .empty;
defer result.deinit(std.testing.allocator);
while (do_blk: {
i += 1;
try result.append(std.testing.allocator, i);
break :do_blk i != 'd';
}) {}
try std.testing.expectEqualStrings("bcd", result.items);
}