First a little background: I am targeting wasm in Rust. I have a function that uses a random number generator, and in wasm I use js-sys::Math::random for that. I want to unit test my function, so I need to use another random number generator for that. So, I make the RNG a parameter to the function as a closure. To simplify, I have

```
fn return_it<RandomFunc: FnMut() -> f64 > (mut f: RandomFunc) -> f64 { f() }
```

Next, I set up oorandom to create random numbers:

```
let mut rng = oorandom::Rand64::new(4);
let mut randomizer = move | | oorandom::Rand64::rand_float(&mut rng);
```

Here is the mystery:

```
let a1 = randomizer();
let a2 = randomizer();
assert_ne!(a1, a2);
```

works as expected, but

```
let b1 = return_it(randomizer);
let b2 = return_it(randomizer);
assert_ne!(b1, b2);
```

fails: every time, return_it(randomizer) returns the same (random) number.