message: Added initial iter_custom implementation for
diff: @@ -347,7 +347,40 @@ impl Bencher {
  self.elapsed = start.elapsed();
  }
  - /// iter_custom as discussed in https://github.com/bheisler/criterion.rs/issues/265
  + /// Times a `routine` by executing it many times and relying on `routine` to measure it's own execution time.
  + ///
  + /// Prefer this timing loop in cases where `routine` has to do it's own measurements to
  + /// get accurate timing information (for example in multi-threaded scnearios where you spawn
  + /// and coordinate with multiple threads).
  + ///
  + /// # Timing model
  + /// Can be customized and depends on the implementation of `routine`.
  + ///
  + /// # Example
  + /// ```rust
  + /// #[macro_use] extern crate criterion;
  + /// use std::time::Instant;
  + ///
  + /// fn foo() {
  + /// // ...
  + /// }
  + ///
  + /// fn bench(c: &mut Criterion) {
  + /// c.bench_function("iter", move |b| {
  + /// b.iter_custom(|| {
  + /// let start = Instant::now();
  + /// for _i in 0..iters {
  + /// black_box(foo());
  + /// }
  + /// start.elapsed()
  + /// })
  + /// });
  + /// }
  + ///
  + /// criterion_group!(benches, bench);
  + /// criterion_main!(benches);
  + /// ```
  + ///
  #[inline(never)]
  pub fn iter_custom<R>(&mut self, mut routine: R)
  where
  