Zig stable multi-key sort with null scores

Zig
const std = @import("std");

const Row = struct { group: []const u8, score: ?u32 };

fn lessThan(_: void, a: Row, b: Row) bool {
    if (!std.mem.eql(u8, a.group, b.group)) return std.mem.lessThan(u8, a.group, b.group);
    if (a.score == null) return false;
    if (b.score == null) return true;
    return a.score.? > b.score.?;
}

pub fn main() void {
    var rows = [_]Row{
        .{ .group = "b", .score = 3 },
        .{ .group = "a", .score = null },
        .{ .group = "a", .score = 9 },
    };
    std.mem.sort(Row, &rows, {}, lessThan);
    for (rows) |r| std.debug.print("{s} {?d}\n", .{ r.group, r.score });
}