Update: See below on how to disable hash randomization in more recent builds.
If you need deterministic hash values (for example, to make your test cases repeatable), you can currently override the random seed by setting the _Hasher._secretKey
property to a pair of UInt64
values.
_Hasher._secretKey = (0, 0)
Because updating the seed affects all hash values in the current process, you'll have to do this before the first Set
or Dictionary
is created. The StdlibUnitTest
package has an example of how this may be done -- it ensures that the seed is overridden when the first TestSuite
is initialized.
Note that _Hasher._secretKey
is not intended for use in regular Swift programs, and will probably disappear in a future update. (In all likelihood, it will be replaced by a better interface for overriding the seed.)