Should a function like ```d uint parseHex(in char ch) pure nothrow @safe @nogc { switch (ch) { case '0': .. case '9': return ch - '0'; case 'a': .. case 'f': return 10 + ch - 'a'; case 'A': .. case 'F': return 10 + ch - 'A'; default: assert(0, "Non-hexadecimal character"); } } ``` instead return an ubyte?