pub async fn work<T, W, F, C>( context: C, starting_items: SegQueue<W>, worker: F, ) -> Result<HashMap<W, T>, JoinError>where W: Debug + Clone + Eq + Hash + Send + Sync + 'static, F: Fn(W, Arc<SegQueue<W>>, Arc<C>) -> Pin<Box<dyn Future<Output = T> + Send + Sync + 'static>> + Send + Sync + 'static, T: Send + Sync + 'static,