moduforge_transform/
transform.rs1use std::{fmt, sync::Arc};
2
3use super::step::{Step, StepResult};
4
5#[derive(Debug)]
7pub struct TransformError {
8 message: String,
9}
10impl fmt::Display for TransformError {
11 fn fmt(
12 &self,
13 f: &mut fmt::Formatter,
14 ) -> fmt::Result {
15 write!(f, "{}", self.message)
16 }
17}
18impl std::error::Error for TransformError {}
19
20impl TransformError {
21 pub fn new(message: String) -> Self {
22 TransformError { message }
23 }
24}
25
26pub trait Transform {
27 fn step(
28 &mut self,
29 step: Arc<dyn Step>,
30 ) -> Result<(), TransformError>;
31 fn doc_changed(&self) -> bool;
32 fn add_step(
33 &mut self,
34 step: Arc<dyn Step>,
35 result: StepResult,
36 );
37}