From 533a47bd9bb4aebe61af8d7ff9327af8cffdb583 Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Sat, 6 Dec 2014 12:30:35 -0500 Subject: [PATCH] librand: use unboxed closures in `distributions` module --- src/librand/distributions/mod.rs | 8 ++++---- src/librand/lib.rs | 1 + 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/librand/distributions/mod.rs b/src/librand/distributions/mod.rs index 0fa989bf0b2b..a44197c98590 100644 --- a/src/librand/distributions/mod.rs +++ b/src/librand/distributions/mod.rs @@ -208,14 +208,14 @@ mod ziggurat_tables; // the perf improvement (25-50%) is definitely worth the extra code // size from force-inlining. #[inline(always)] -fn ziggurat( +fn ziggurat( rng: &mut R, symmetric: bool, x_tab: ziggurat_tables::ZigTable, f_tab: ziggurat_tables::ZigTable, - pdf: |f64|: 'static -> f64, - zero_case: |&mut R, f64|: 'static -> f64) - -> f64 { + mut pdf: P, + mut zero_case: Z) + -> f64 where P: FnMut(f64) -> f64, Z: FnMut(&mut R, f64) -> f64 { static SCALE: f64 = (1u64 << 53) as f64; loop { // reimplement the f64 generation as an optimisation suggested diff --git a/src/librand/lib.rs b/src/librand/lib.rs index d357f247f1b7..4fba3707703a 100644 --- a/src/librand/lib.rs +++ b/src/librand/lib.rs @@ -24,6 +24,7 @@ html_playground_url = "http://play.rust-lang.org/")] #![feature(macro_rules, phase, globs)] +#![feature(unboxed_closures)] #![no_std] #![experimental]