I implemented some of the suggestions, here's the list of changes: Changelog: * Add a new overload to the 'digest' function which accepts an InputRange * Add a new convenience function 'hexDigest' which works just like 'digest', but returns a string (also works with InputRanges)
An open question is whether md5StringOf/md5HexOf aliases should be added (similar to md5Of)? * Add a new convenience function 'startDigest' which returns an initialized digest * New example for file hashing in idiomatic D * Documented that Digests are always OutputRanges * Added new examples using std.algorithm.copy & OutputRange interface * Small optimization in toHexString & hexDigest: do not allocate if possible TODO: * move the package to std.digest (unless there are objections): std.hash.hash --> std.digest.digest std.hash.md --> std.digest.md std.hash.sha --> std.digest.sha std.hash.crc --> std.digest.crc * make sure the docs are consistent regarding names (digest vs. hash) Code: https://github.com/jpf91/phobos/tree/newHash/std/hash https://github.com/jpf91/phobos/compare/master...newHash Docs: http://dl.dropbox.com/u/24218791/d/phobos/std_hash_hash.html http://dl.dropbox.com/u/24218791/d/phobos/std_hash_md.html http://dl.dropbox.com/u/24218791/d/phobos/std_hash_sha.html http://dl.dropbox.com/u/24218791/d/phobos/std_hash_crc.html