mirror of
https://codeberg.org/unspeaker/tengri.git
synced 2025-12-06 03:36:42 +01:00
18 lines
553 B
Rust
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)
|
|
}
|
|
}
|