moduforge_transform/
transform.rs

1use std::{fmt, sync::Arc};
2
3use super::step::{Step, StepResult};
4
5// 定义 TransformError 结构体
6#[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}