1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
#[cfg(feature = "serde")]
use serde::{Deserialize, Serialize};
use crate::Shape;
/// A group of two 3-dimensional shapes
///
/// A group is a collection of disjoint shapes. It is not a union, in that the
/// shapes in the group are not allowed to touch or overlap.
///
/// # Limitations
///
/// Whether the shapes in the group touch or overlap is not currently checked.
#[derive(Clone, Debug, PartialEq)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[repr(C)]
pub struct Group {
/// The first of the shapes
pub a: Shape,
/// The second of the shapes
pub b: Shape,
}
impl From<Group> for Shape {
fn from(shape: Group) -> Self {
Self::Group(Box::new(shape))
}
}