Many lints were disabled due to low or nil utility, and a few suggestions
ignored in the interests of readability or correctness. Command:
~/.cargo/bin/cargo-clippy --features=log,nightly,serde-1 -- -A inline_always -A approx_constant -A unreadable_literal -A cast_lossless -A len_zero -A unit_arg -A many_single_char_names -A doc_markdown -A single_match -A transmute_int_to_float -A float_cmp -A identity_op -A too_many_arguments -A new_ret_no_self
This moves core traits/types/impls to rand-core
impls and le modules are now public (from rand-core only)
CI tweaks, needed since not all features are duplicated on rand-core
Cross-crate doc links now use full URLs (is there a better option?)
Cherry-picked from adcd8e56595a6 [by Paul Dicker, 19th October]
I have implemented it as a function instead of a trait, as that makes it easy to
add it to every RNG ont at a time.
I split the `init` function in two instead of the current version that uses a
bool to select between two paths. This makes it more clear how the seed is used.
The current `mix` macro has to be defined in the function, and would have to be
duplicated. Therefore I converted it to a seperate function.
I precalculated the values a...h, but am not sure this is a good idea. It makes
the resulting code smaller, and gives a small performance win. Because it are
'magic' values anyway, I thought why not?
This removes the unsafe blocks from the main isaac and isaac64 routines.
Some macro's are replaced by functions.
Over time the implementation of ISAAC and ISAAC-64 have diverged a bit, now they
are as similar as possible (for easier comparison).
The code is tested against the previous implementation, and the reference
implementation. IsaacRng now does 34% better in the benchmark.
[Cherry-picked from 4747665d228]