mdq 0.10.0

Select and render specific elements in a Markdown document
Documentation
pub(crate) trait Concatenate: Sized {
    fn try_concatenate(&mut self, other: Self) -> Result<(), Self>;

    fn concatenate_similar(items: Vec<Self>) -> Vec<Self> {
        let mut results = Vec::with_capacity(items.len());
        let mut iter = items.into_iter();
        let Some(first) = iter.next() else {
            return results;
        };
        results.push(first);
        let mut prev = results.last_mut().expect("can't be empty immediately after push");

        for curr in iter {
            match prev.try_concatenate(curr) {
                Ok(()) => {}
                Err(new_segment) => {
                    results.push(new_segment);
                    prev = results.last_mut().expect("can't be empty immediately after push");
                }
            }
        }
        results
    }
}