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}