use pact_models::matchingrules::MatchingRuleCategory;
use pact_models::path_exp::DocPath;
use std::fmt::Debug;
#[macro_use] mod json_macros;
mod json_pattern;
#[macro_use] mod special_rules;
mod string_pattern;
#[cfg(feature = "datetime")] #[macro_use] mod date_time;
pub use self::json_pattern::*;
pub use self::special_rules::*;
pub use self::string_pattern::*;
#[cfg(feature = "datetime")] pub use self::date_time::*;
pub trait Pattern: Debug {
type Matches;
fn to_example(&self) -> Self::Matches;
fn to_example_bytes(&self) -> Vec<u8>;
fn extract_matching_rules(&self, path: DocPath, rules_out: &mut MatchingRuleCategory);
}