Adds brief intro to hashes module.

This commit is contained in:
Grzegorz Adam Hankiewicz
2014-06-06 20:58:51 +02:00
parent bde9d1ac07
commit f45a1dbf1d

View File

@@ -8,7 +8,34 @@
#
## This module implements efficient computations of hash values for diverse
## Nimrod types.
## Nimrod types. All the procs are based on these two building blocks: the `!&
## proc <#!&>`_ used to start or mix a hash value, and the `!$ proc <#!$>`_
## used to *finish* the hash value. If you want to implement hash procs for
## your custom types you will end up writing the following kind of skeleton of
## code:
##
## .. code-block:: nimrod
## proc hash(x: Something): THash =
## ## Computes a THash from `x`.
## var h: THash = 0
## # Iterate over parts of `x`.
## for xAtom in x:
## # Mix the atom with the partial hash.
## h = h !& xAtom
## # Finish the hash.
## result = !$h
##
## If your custom types contain fields for which there already is a hash proc,
## like for example objects made up of ``strings``, you can simply hash
## together the hash value of the individual fields:
##
## .. code-block:: nimrod
## proc hash(x: Something): THash =
## ## Computes a THash from `x`.
## var h: THash = 0
## h = h &! hash(x.foo)
## h = h &! hash(x.bar)
## result = !$h
import
strutils