nalgebra/src/core/helper.rs

23 lines
584 B
Rust

#[cfg(feature = "arbitrary")]
use quickcheck::{Arbitrary, Gen};
use rand::{Rand, Rng};
/// Simple helper function for rejection sampling
#[cfg(feature = "arbitrary")]
#[doc(hidden)]
#[inline]
pub fn reject<G: Gen, F: FnMut(&T) -> bool, T: Arbitrary>(g: &mut G, f: F) -> T {
use std::iter;
iter::repeat(())
.map(|_| Arbitrary::arbitrary(g))
.find(f)
.unwrap()
}
#[doc(hidden)]
#[inline]
pub fn reject_rand<G: Rng, F: FnMut(&T) -> bool, T: Rand>(g: &mut G, f: F) -> T {
use std::iter;
iter::repeat(()).map(|_| Rand::rand(g)).find(f).unwrap()
}