diff --git a/src/compareFnField.zig b/src/compareFnField.zig new file mode 100644 index 0000000000000000000000000000000000000000..105d40a4cb19918623a5e16e38104f80c00729d2 --- /dev/null +++ b/src/compareFnField.zig @@ -0,0 +1,13 @@ +const std = @import("std"); +const extras = @import("./lib.zig"); + +pub fn compareFnField(N: type, H: type, f: std.meta.FieldEnum(H)) fn (N, H) std.math.Order { + const S = struct { + pub fn compare(needle: N, row: H) std.math.Order { + if (needle < @field(row, @tagName(f))) return .lt; + if (needle > @field(row, @tagName(f))) return .gt; + return .eq; + } + }; + return S.compare; +} diff --git a/src/lib.zig b/src/lib.zig index 3720bdd891a72765841a539b49f6bc158fff0190..3dcf2a735a4505daa2a8d62a91021ebb273d9306 100644 --- a/src/lib.zig +++ b/src/lib.zig @@ -115,3 +115,4 @@ pub usingnamespace @import("./omit.zig"); pub usingnamespace @import("./swapMany.zig"); pub usingnamespace @import("./ManyArrayList.zig"); pub usingnamespace @import("./compareFnBasic.zig"); +pub usingnamespace @import("./compareFnField.zig");