Stable multi-key sort of Nim records with nulls

Nim
import std/[algorithm, options]

type User = object
  name: string
  score: Option[int]

let users = @[User(name: "ana", score: some(10)),
              User(name: "bob", score: none(int)),
              User(name: "cy", score: some(3))]

proc cmpUser(a, b: User): int =
  if a.score.isNone or b.score.isNone:
    return cmp(a.score.isNone, b.score.isNone)  # nulls last
  result = -cmp(a.score.get, b.score.get)       # score desc
  if result == 0: result = cmp(a.name, b.name)

var sorted = users
sorted.sort(cmpUser)
for u in sorted: echo u.name, " ", u.score