mod area;
mod bars;
mod cells;
mod line;
mod points;
mod rule;
mod text;
pub use area::Area;
pub use bars::Bars;
pub(crate) use bars::Placement;
pub use cells::Cells;
pub use line::Line;
pub(crate) use line::Source;
pub use points::Points;
pub(crate) use rule::Orientation;
pub use rule::Rule;
pub use text::Text;
#[non_exhaustive]
#[derive(Debug, Clone)]
pub enum Mark<'a> {
Line(Line<'a>),
Points(Points<'a>),
Bars(Bars<'a>),
Area(Area<'a>),
Cells(Cells<'a>),
Rule(Rule),
Text(Text),
}
impl<'a> Mark<'a> {
pub fn into_owned(self) -> Mark<'static> {
match self {
Mark::Line(line) => Mark::Line(line.into_owned()),
Mark::Points(points) => Mark::Points(points.into_owned()),
Mark::Bars(bars) => Mark::Bars(bars.into_owned()),
Mark::Area(area) => Mark::Area(area.into_owned()),
Mark::Cells(cells) => Mark::Cells(cells.into_owned()),
Mark::Rule(rule) => Mark::Rule(rule),
Mark::Text(text) => Mark::Text(text),
}
}
}
impl<'a> From<Line<'a>> for Mark<'a> {
fn from(line: Line<'a>) -> Mark<'a> {
Mark::Line(line)
}
}
impl<'a> From<Points<'a>> for Mark<'a> {
fn from(points: Points<'a>) -> Mark<'a> {
Mark::Points(points)
}
}
impl<'a> From<Bars<'a>> for Mark<'a> {
fn from(bars: Bars<'a>) -> Mark<'a> {
Mark::Bars(bars)
}
}
impl<'a> From<Area<'a>> for Mark<'a> {
fn from(area: Area<'a>) -> Mark<'a> {
Mark::Area(area)
}
}
impl<'a> From<Rule> for Mark<'a> {
fn from(rule: Rule) -> Mark<'a> {
Mark::Rule(rule)
}
}
impl<'a> From<Text> for Mark<'a> {
fn from(text: Text) -> Mark<'a> {
Mark::Text(text)
}
}
impl<'a> From<Cells<'a>> for Mark<'a> {
fn from(cells: Cells<'a>) -> Mark<'a> {
Mark::Cells(cells)
}
}