ligen_utils/transformers/
mod.rs1use ligen_ir::Library;
2
3pub mod path;
4pub mod alias;
5
6pub trait Transform<In: Sized, Out: Sized> {
7 fn transform(&self, data: &In) -> Out;
8}
9
10pub trait Transformable: Sized + Clone {
11 fn transform<T: Transform<Self, Self>>(&self, transform: T) -> Self {
12 transform.transform(self)
13 }
14
15 fn transforms(&self, transforms: &[&dyn Transform<Self, Self>]) -> Self {
16 let mut data = self.clone();
17 for transform in transforms {
18 data = transform.transform(&data);
19 }
20 data
21 }
22}
23
24impl Transformable for Library {}