pub fn delay_loading_batches<'a>() -> DelayGuard<'a>
Expand description
Provides a guard which prevents loading new batches until dropped.
def_batch_loader! {
pub async fn loader(inputs: u64) -> (Vec<u64>, String) {
let inputs: Vec<_> = inputs.map(|a| *a).collect();
let inputs_copy = inputs.clone();
inputs.into_iter().map(move |input| {
(inputs_copy.clone(), input.to_string())
})
}
}
batched(async {
let mut one = loader(1);
let mut two = loader(2);
let mut three = loader(3);
one.schedule();
// yielding without delay_loading_batches will cause the batch to load
yield_now().await;
assert_eq!(one.await, Box::new((vec![1], "1".to_owned())));
// delay_loading_batches enables accumulating batches across yields
let guard = delay_loading_batches();
two.schedule();
yield_now().await;
drop(guard);
let three = three.await;
assert_eq!(three, Box::new((vec![2, 3], "3".to_owned())));
}).await;
ยงPanics
Must be called from within a batched() context.