Skip to main content

rscad_core/objects/
two_dimensional.rs

1use crate::prelude_::*;
2pub mod circle;
3pub use circle::*;
4pub mod square;
5pub use square::*;
6pub mod polygon;
7pub use polygon::*;
8
9pub trait TwoDimensional: Object {}
10
11impl<A: TwoDimensional, B: TwoDimensional> TwoDimensional for Difference<A, B> {}
12impl<A: TwoDimensional, B: TwoDimensional> TwoDimensional for Intersection<A, B> {}
13impl<A: TwoDimensional, B: TwoDimensional> TwoDimensional for TwoContainer<A, B> {}
14impl<A: TwoDimensional, B: TwoDimensional> TwoDimensional for Union<A, B> {}
15impl<A: TwoDimensional, B: TwoDimensional> TwoDimensional for Xor<A, B> {}
16impl<const N: usize> TwoDimensional for Polygon<N> {}
17impl<T: Object> TwoDimensional for Projection<T> {}
18impl<T: TwoDimensional + Clone, const N: usize> TwoDimensional for Pattern<T, N> {}
19impl<T: TwoDimensional + Clone> TwoDimensional for PatternRuntime<T> {}
20impl<T: TwoDimensional, const N: usize> TwoDimensional for [T; N] {}
21#[cfg(feature = "std")]
22impl<T: TwoDimensional> TwoDimensional for Box<T> {}
23impl<T: TwoDimensional> TwoDimensional for Centered<T> {}
24impl<T: TwoDimensional> TwoDimensional for Colored<T> {}
25impl<T: TwoDimensional> TwoDimensional for Option<T> {}
26impl<T: TwoDimensional> TwoDimensional for Rotate<T> {}
27impl<T: TwoDimensional> TwoDimensional for Scale<T> {}
28impl<T: TwoDimensional> TwoDimensional for Translate<T> {}
29#[cfg(feature = "std")]
30impl<T: TwoDimensional> TwoDimensional for Vec<T> {}
31impl TwoDimensional for Circle {}
32#[cfg(feature = "std")]
33impl TwoDimensional for PolygonDynamic {}
34impl TwoDimensional for Square {}