Skip to main content

rscad_core/objects/
three_dimensional.rs

1use crate::prelude_::*;
2pub mod cube;
3pub use cube::*;
4pub mod cylinder;
5pub use cylinder::*;
6pub mod sphere;
7pub use sphere::*;
8
9pub trait ThreeDimensional: Object {}
10
11impl ThreeDimensional for Cube {}
12impl ThreeDimensional for Cylinder {}
13impl ThreeDimensional for Sphere {}
14impl<T: ThreeDimensional> ThreeDimensional for Translate<T> {}
15impl<T: ThreeDimensional> ThreeDimensional for Scale<T> {}
16impl<T: ThreeDimensional> ThreeDimensional for Rotate<T> {}
17#[cfg(feature = "std")]
18impl<T: ThreeDimensional> ThreeDimensional for Box<T> {}
19#[cfg(feature = "std")]
20impl<T: ThreeDimensional> ThreeDimensional for Vec<T> {}
21impl<T: ThreeDimensional> ThreeDimensional for Option<T> {}
22impl<A: ThreeDimensional, B: ThreeDimensional> ThreeDimensional for Difference<A, B> {}
23impl<A: ThreeDimensional, B: ThreeDimensional> ThreeDimensional for Intersection<A, B> {}
24impl<A: ThreeDimensional, B: ThreeDimensional> ThreeDimensional for Union<A, B> {}
25impl<A: ThreeDimensional, B: ThreeDimensional> ThreeDimensional for Xor<A, B> {}
26impl<T: ThreeDimensional, const N: usize> ThreeDimensional for [T; N] {}
27impl<T: ThreeDimensional + Clone, const N: usize> ThreeDimensional for Pattern<T, N> {}
28impl<A: ThreeDimensional, B: ThreeDimensional> ThreeDimensional for TwoContainer<A, B> {}