1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
use crossbeam_channel::SendError;
use crate::{
id_targeted::IdTargeted, pool_item::PoolItem, request_with_response::RequestWithResponse,
sender_couplet::SenderCouplet, ThreadPool,
};
use super::SenderAndReceiver;
impl<P> SenderAndReceiver<P> for ThreadPool<P>
where
P: PoolItem,
{
fn send_and_receive<'a, T>(
&'a self,
requests: impl Iterator<Item = T> + 'a,
) -> Result<Box<dyn Iterator<Item = T::Response> + 'a>, SendError<SenderCouplet<P>>>
where
T: RequestWithResponse<P> + IdTargeted + 'a,
{
match self.send_and_receive(requests) {
Ok(result) => Ok(Box::new(result)),
Err(err) => Err(err),
}
}
}