offroad 0.0.1-alpha

2D offsetting for arc polylines.
Documentation
#![allow(dead_code)]

use crate::Arc;

pub struct ArcString(pub Vec<Arc>);

pub struct ArcsIter<'a>(::core::slice::Iter<'a, Arc>);

impl<'a> Iterator for ArcsIter<'a> {
    type Item = &'a Arc;

    fn next(&mut self) -> Option<Self::Item> {
        self.0.next()
    }

    fn size_hint(&self) -> (usize, Option<usize>) {
        self.0.size_hint()
    }
}

impl<'a> ExactSizeIterator for ArcsIter<'a> {
    fn len(&self) -> usize {
        self.0.len()
    }
}

impl<'a> DoubleEndedIterator for ArcsIter<'a> {
    fn next_back(&mut self) -> Option<Self::Item> {
        self.0.next_back()
    }
}

impl ArcString {
    pub fn new(value: Vec<Arc>) -> Self {
        Self(value)
    }

    pub fn arcs(&self) -> ArcsIter {
        ArcsIter(self.0.iter())
    }

    pub fn arcs_mut(&mut self) -> impl DoubleEndedIterator<Item = &mut Arc> {
        self.0.iter_mut()
    }
}

#[cfg(test)]
mod test_arc_string {

    #[test]
    fn test_new() {}
}