1use alloc::boxed::Box;
2use alloc::vec::Vec;
3
4use super::{Reader, Readers};
5
6pub struct ReadersBuilder<T, E>(pub(crate) Vec<Box<dyn Reader<T, E>>>);
7
8unsafe impl<T, E> Sync for ReadersBuilder<T, E>
9where
10 T: Sync,
11 E: Sync,
12{
13}
14unsafe impl<T, E> Send for ReadersBuilder<T, E>
15where
16 T: Send,
17 E: Send,
18{
19}
20
21impl<T, E> ReadersBuilder<T, E> {
22 #[inline]
23 pub fn new() -> Self {
24 ReadersBuilder(Vec::new())
25 }
26
27 #[inline]
28 pub fn add<R: 'static + Reader<T, E>>(mut self, reader: R) -> Self {
29 self.0.push(Box::new(reader));
30 self
31 }
32
33 #[inline]
34 pub fn build(self) -> Readers<T, E> {
35 Readers::from(self)
36 }
37}