Make task_rng() return @mut R instead of @@mut R

This commit is contained in:
Kevin Ballard 2013-06-18 11:54:00 -07:00
parent f348465283
commit b8b2d1e5b4

View file

@ -843,7 +843,7 @@ fn tls_rng_state(_v: @@mut IsaacRng) {}
* `task_rng().gen::<int>()`. * `task_rng().gen::<int>()`.
*/ */
#[inline] #[inline]
pub fn task_rng() -> @@mut IsaacRng { pub fn task_rng() -> @mut IsaacRng {
let r : Option<@@mut IsaacRng>; let r : Option<@@mut IsaacRng>;
unsafe { unsafe {
r = local_data::local_data_get(tls_rng_state); r = local_data::local_data_get(tls_rng_state);
@ -853,20 +853,18 @@ pub fn task_rng() -> @@mut IsaacRng {
unsafe { unsafe {
let rng = @@mut IsaacRng::new_seeded(seed()); let rng = @@mut IsaacRng::new_seeded(seed());
local_data::local_data_set(tls_rng_state, rng); local_data::local_data_set(tls_rng_state, rng);
rng *rng
} }
} }
Some(rng) => rng Some(rng) => *rng
} }
} }
// Allow direct chaining with `task_rng` // Allow direct chaining with `task_rng`
impl<R: Rng> Rng for @@mut R { impl<R: Rng> Rng for @mut R {
#[inline] #[inline]
fn next(&mut self) -> u32 { fn next(&mut self) -> u32 {
match *self { (**self).next()
@@ref mut r => r.next()
}
} }
} }
@ -876,9 +874,7 @@ impl<R: Rng> Rng for @@mut R {
*/ */
#[inline] #[inline]
pub fn random<T: Rand>() -> T { pub fn random<T: Rand>() -> T {
match *task_rng() { task_rng().gen()
@ref mut r => r.gen()
}
} }
#[cfg(test)] #[cfg(test)]