added hash for uints (#5435)
This commit is contained in:
parent
f250c30b9d
commit
5774145f5d
2 changed files with 23 additions and 0 deletions
|
|
@ -112,6 +112,14 @@ proc hash*(x: int64): Hash {.inline.} =
|
||||||
## efficient hashing of int64 integers
|
## efficient hashing of int64 integers
|
||||||
result = toU32(x)
|
result = toU32(x)
|
||||||
|
|
||||||
|
proc hash*(x: uint): Hash {.inline.} =
|
||||||
|
## efficient hashing of unsigned integers
|
||||||
|
result = cast[int](x)
|
||||||
|
|
||||||
|
proc hash*(x: uint64): Hash {.inline.} =
|
||||||
|
## efficient hashing of uint64 integers
|
||||||
|
result = toU32(cast[int](x))
|
||||||
|
|
||||||
proc hash*(x: char): Hash {.inline.} =
|
proc hash*(x: char): Hash {.inline.} =
|
||||||
## efficient hashing of characters
|
## efficient hashing of characters
|
||||||
result = ord(x)
|
result = ord(x)
|
||||||
|
|
|
||||||
|
|
@ -72,4 +72,19 @@ block:
|
||||||
var t = initTable[int, int]()
|
var t = initTable[int, int]()
|
||||||
t[0] = 0
|
t[0] = 0
|
||||||
|
|
||||||
|
# Check hashability of all integer types (issue #5429)
|
||||||
|
block:
|
||||||
|
let intTables = (
|
||||||
|
newTable[int, string](),
|
||||||
|
newTable[int8, string](),
|
||||||
|
newTable[int16, string](),
|
||||||
|
newTable[int32, string](),
|
||||||
|
newTable[int64, string](),
|
||||||
|
newTable[uint, string](),
|
||||||
|
newTable[uint8, string](),
|
||||||
|
newTable[uint16, string](),
|
||||||
|
newTable[uint32, string](),
|
||||||
|
newTable[uint64, string](),
|
||||||
|
)
|
||||||
|
|
||||||
echo "true"
|
echo "true"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue