maudit_rolldown_utils 0.1.0

Fork of Rolldown for the Maudit project until Rolldown is published on crates.io
Documentation
#[cfg(target_family = "wasm")]
mod wasm_shims {
  use oxc_index::{Idx, IndexVec};
  pub trait IndexVecExt<'data, I: Idx, T: 'data> {
    fn par_iter_mut_enumerated(&'data mut self) -> impl Iterator<Item = (I, &'data mut T)>;
  }

  impl<'data, I: Idx, T: 'data> IndexVecExt<'data, I, T> for IndexVec<I, T> {
    fn par_iter_mut_enumerated(&'data mut self) -> impl Iterator<Item = (I, &'data mut T)> {
      self.iter_mut_enumerated()
    }
  }
}

#[cfg(target_family = "wasm")]
pub use wasm_shims::*;

#[cfg(not(target_family = "wasm"))]
mod none_wasm {
  use oxc_index::{Idx, IndexVec};
  use rayon::iter::{IndexedParallelIterator, IntoParallelRefMutIterator, ParallelIterator};
  pub trait IndexVecExt<'data, I: Idx + Send, T: Send + 'data> {
    fn par_iter_mut_enumerated(&'data mut self) -> impl ParallelIterator<Item = (I, &'data mut T)>;
  }

  impl<'data, I: Idx + Send, T: Send + 'data> IndexVecExt<'data, I, T> for IndexVec<I, T> {
    fn par_iter_mut_enumerated(&'data mut self) -> impl ParallelIterator<Item = (I, &'data mut T)> {
      self.raw.par_iter_mut().enumerate().map(move |(i, t)| (I::from_usize(i), t))
    }
  }
}

#[cfg(not(target_family = "wasm"))]
pub use none_wasm::*;