Skip to main content

gram_codec/
standard_graph.rs

1//! Extension trait providing `from_gram` for StandardGraph.
2//!
3//! This lives in gram-codec (not pattern-core) because gram-codec depends on
4//! pattern-core, but not vice versa.
5
6use pattern_core::graph::StandardGraph;
7
8use crate::ParseError;
9
10/// Extension trait for constructing types from gram notation.
11pub trait FromGram: Sized {
12    fn from_gram(input: &str) -> Result<Self, ParseError>;
13}
14
15impl FromGram for StandardGraph {
16    fn from_gram(input: &str) -> Result<Self, ParseError> {
17        let patterns = crate::parse_gram(input)?;
18        Ok(StandardGraph::from_patterns(patterns))
19    }
20}