tengri/dsl/src/dsl_ns.rs
unspeaker ff4d0c9db5
Some checks failed
/ build (push) Has been cancelled
dsl: split ns trait
2025-09-03 03:30:06 +03:00

18 lines
553 B
Rust

use crate::*;
pub trait DslNs<'a, T: 'a>: DslNsWords<'a, T> + DslNsExprs<'a, T> {
/// Resolve an expression or symbol.
fn from (&'a self, dsl: impl Dsl + 'a) -> Perhaps<T> {
if let Ok(Some(literal)) = self.from_literal(&dsl) {
Ok(Some(literal))
} else if let Ok(Some(meaning)) = self.from_word(&dsl) {
Ok(Some(meaning))
} else {
self.from_expr(dsl)
}
}
/// Resolve as literal if valid.
fn from_literal (&self, _: impl Dsl) -> Perhaps<T> {
Ok(None)
}
}