diff options
| author | tslil <tslil@posteo.de> | 2026-03-21 08:49:35 +0000 |
|---|---|---|
| committer | tslil <tslil@posteo.de> | 2026-03-21 17:26:50 +0000 |
| commit | c22cc3b348bdcb446fb0e44070da36fdf6b05800 (patch) | |
| tree | 81371ff735529e7b2a5b1727be9c8b06123609e6 /rprt-engine/src/monad.rs | |
| parent | 5a5da7bc299bee12072e421d1936554690e34dd6 (diff) | |
big rework to support evaluation of selection functions, WiP
Diffstat (limited to 'rprt-engine/src/monad.rs')
| -rw-r--r-- | rprt-engine/src/monad.rs | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/rprt-engine/src/monad.rs b/rprt-engine/src/monad.rs index 34ff46b..ac35722 100644 --- a/rprt-engine/src/monad.rs +++ b/rprt-engine/src/monad.rs @@ -1,6 +1,6 @@ use crate::{ selection::{Selection, SelectionError}, - state::{EditorState, EvaluationResult, GroupedChangeError}, + state::{EditorState, GroupedChangeError, StateResult}, }; pub enum EvaluationStrategy { @@ -9,33 +9,33 @@ pub enum EvaluationStrategy { } #[derive(Debug)] -pub enum EvaluationError { +pub enum MonadError { Selection(SelectionError), GroupedChange(GroupedChangeError), } -impl From<SelectionError> for EvaluationError { +impl From<SelectionError> for MonadError { fn from(err: SelectionError) -> Self { - EvaluationError::Selection(err) + MonadError::Selection(err) } } -impl From<GroupedChangeError> for EvaluationError { +impl From<GroupedChangeError> for MonadError { fn from(err: GroupedChangeError) -> Self { - EvaluationError::GroupedChange(err) + MonadError::GroupedChange(err) } } pub struct EditorStateMonad { - func: Box<dyn Fn(&EditorState) -> EvaluationResult>, + func: Box<dyn Fn(&EditorState) -> StateResult>, } impl EditorStateMonad { - pub fn new(f: impl Fn(&EditorState) -> EvaluationResult + 'static) -> Self { + pub fn new(f: impl Fn(&EditorState) -> StateResult + 'static) -> Self { Self { func: Box::new(f) } } - pub fn run(&self, state: &EditorState) -> EvaluationResult { + pub fn run(&self, state: &EditorState) -> StateResult { (self.func)(state) } @@ -43,7 +43,7 @@ impl EditorStateMonad { monads: Vec<EditorStateMonad>, strategy: EvaluationStrategy, state: &mut EditorState, - ) -> Result<Selection, EvaluationError> { + ) -> Result<Selection, MonadError> { match strategy { EvaluationStrategy::Sequential => { let mut last_selection = Selection::empty(); |
