Commit 1435604b84
std/mem.zig
@@ -511,9 +511,8 @@ fn testWriteIntImpl() {
pub fn min(comptime T: type, slice: []const T) -> T {
var best = slice[0];
- var i: usize = 1;
- while (i < slice.len) : (i += 1) {
- best = math.min(best, slice[i]);
+ for (slice[1..]) |item| {
+ best = math.min(best, item);
}
return best;
}
@@ -524,9 +523,8 @@ test "mem.min" {
pub fn max(comptime T: type, slice: []const T) -> T {
var best = slice[0];
- var i: usize = 1;
- while (i < slice.len) : (i += 1) {
- best = math.max(best, slice[i]);
+ for (slice[1..]) |item| {
+ best = math.max(best, item);
}
return best;
}
std/sort.zig
@@ -1132,3 +1132,25 @@ fn fuzzTest(rng: &std.rand.Rand) {
}
}
}
+
+pub fn min(comptime T: type, items: []T, lessThan: fn(lhs: &const T, rhs: &const T)->bool) -> T {
+ var i: usize = 0;
+ var smallest = items[0];
+ for (items[1..]) |item| {
+ if (lessThan(item, smallest)) {
+ smallest = item;
+ }
+ }
+ return smallest;
+}
+
+pub fn max(comptime T: type, items: []T, lessThan: fn(lhs: &const T, rhs: &const T)->bool) -> T {
+ var i: usize = 0;
+ var biggest = items[0];
+ for (items[1..]) |item| {
+ if (lessThan(biggest, item)) {
+ biggest = item;
+ }
+ }
+ return biggest;
+}