kgdata 4.0.1

Library to process dumps of knowledge graphs (Wikipedia, DBpedia, Wikidata)
Documentation
use rayon::prelude::*;

use super::ParallelDataset;

#[derive(Clone)]
pub struct SortByKeyOp<D: ParallelDataset, F> {
    pub base: D,
    pub op: F,
    pub ascending: bool,
}

impl<D, F> SortByKeyOp<D, F>
where
    D: ParallelDataset,
    F: Fn(&D::Item) -> bool + Sync + Send,
{
    #[allow(dead_code)]
    fn collect(self) -> Vec<D::Item> {
        let mut items: Vec<D::Item> = self.base.into_par_iter().collect();
        if self.ascending {
            items.sort_unstable_by_key(self.op);
        } else {
            items.sort_unstable_by_key(|item| std::cmp::Reverse((self.op)(item)));
        }

        items
    }
}