1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
use crate::{common::*, parser::Parser};

pub trait ParserProvider: fmt::Debug {
    fn get_parser_for_data(&self) -> Box<dyn Parser + Sync + Send>;
    fn get_parser_for_commands(&self) -> Box<dyn Parser + Sync + Send>;
}
impl<T> ParserProvider for Arc<T>
where
    T: ParserProvider,
{
    fn get_parser_for_data(&self) -> Box<dyn Parser + Sync + Send> {
        T::get_parser_for_data(self)
    }
    fn get_parser_for_commands(&self) -> Box<dyn Parser + Sync + Send> {
        T::get_parser_for_commands(self)
    }
}