1 use crate::error::Result; 2 use crate::{Interceptor, InterceptorBuilder}; 3 use std::sync::Arc; 4 5 pub type MockBuilderResult = Result<Arc<dyn Interceptor + Send + Sync>>; 6 7 /// MockBuilder is a mock Builder for testing. 8 pub struct MockBuilder { 9 pub build: Box<dyn (Fn(&str) -> MockBuilderResult) + Send + Sync + 'static>, 10 } 11 12 impl MockBuilder { new<F: (Fn(&str) -> MockBuilderResult) + Send + Sync + 'static>(f: F) -> Self13 pub fn new<F: (Fn(&str) -> MockBuilderResult) + Send + Sync + 'static>(f: F) -> Self { 14 MockBuilder { build: Box::new(f) } 15 } 16 } 17 18 impl InterceptorBuilder for MockBuilder { build(&self, id: &str) -> MockBuilderResult19 fn build(&self, id: &str) -> MockBuilderResult { 20 (self.build)(id) 21 } 22 } 23