Expose an RNG (the one used by our runtime) to Rust via std.
This commit is contained in:
25
src/lib/rand.rs
Normal file
25
src/lib/rand.rs
Normal file
@@ -0,0 +1,25 @@
|
||||
/**
|
||||
* Bindings the runtime's random number generator (ISAAC).
|
||||
*/
|
||||
|
||||
native "rust" mod rustrt {
|
||||
type rctx;
|
||||
fn rand_new() -> rctx;
|
||||
fn rand_next(rctx c) -> u32;
|
||||
fn rand_free(rctx c);
|
||||
}
|
||||
|
||||
type rng = obj { fn next() -> u32; };
|
||||
|
||||
fn mk_rng() -> rng {
|
||||
obj rt_rng(rustrt.rctx c) {
|
||||
fn next() -> u32 {
|
||||
ret rustrt.rand_next(c);
|
||||
}
|
||||
drop {
|
||||
rustrt.rand_free(c);
|
||||
}
|
||||
}
|
||||
|
||||
ret rt_rng(rustrt.rand_new());
|
||||
}
|
||||
Reference in New Issue
Block a user