// Copyright (C) 2021-2022 Soni L. // SPDX-License-Identifier: MIT OR Apache-2.0 use std::borrow::Borrow; use std::collections::BTreeMap; use serde::Deserialize; use serde::Deserializer; use serde::Serialize; use crate::Predicate; use crate::errors::PatternError; use crate::parser::parse; //use crate::vm::Matcher; use crate::vm::PatternConstants; //use crate::vm::MAX_CALLS; pub struct Pattern { consts: PatternConstants, } impl Pattern { /// Compiles the input into a pattern. pub fn compile<'s, PKey, OKey>( input: &'s str, preds: Option>>, objs: Option> ) -> Result> where PKey: Borrow + Ord, OKey: Borrow + Ord, { Ok(Self { consts: parse(input, preds, objs)? }) } /// Matches the pattern against an input. pub fn deserialize<'de, Der, De>(&self, de: Der) -> Result where Der: Deserializer<'de>, De: Deserialize<'de>, { todo!() } }