rspack_core 0.100.1

rspack core
Documentation
use std::ops::{Deref, DerefMut};

use rspack_collections::IdentifierMap;

use crate::{ArtifactExt, ModuleId, incremental::IncrementalPasses};

#[derive(Debug, Default, Clone)]
pub struct ModuleIdsArtifact(IdentifierMap<ModuleId>);

impl ArtifactExt for ModuleIdsArtifact {
  const PASS: IncrementalPasses = IncrementalPasses::MODULE_IDS;
}

impl Deref for ModuleIdsArtifact {
  type Target = IdentifierMap<ModuleId>;

  fn deref(&self) -> &Self::Target {
    &self.0
  }
}

impl DerefMut for ModuleIdsArtifact {
  fn deref_mut(&mut self) -> &mut Self::Target {
    &mut self.0
  }
}

impl From<IdentifierMap<ModuleId>> for ModuleIdsArtifact {
  fn from(value: IdentifierMap<ModuleId>) -> Self {
    Self(value)
  }
}

impl From<ModuleIdsArtifact> for IdentifierMap<ModuleId> {
  fn from(value: ModuleIdsArtifact) -> Self {
    value.0
  }
}

impl FromIterator<<IdentifierMap<ModuleId> as IntoIterator>::Item> for ModuleIdsArtifact {
  fn from_iter<T: IntoIterator<Item = <IdentifierMap<ModuleId> as IntoIterator>::Item>>(
    iter: T,
  ) -> Self {
    Self(IdentifierMap::from_iter(iter))
  }
}

impl IntoIterator for ModuleIdsArtifact {
  type Item = <IdentifierMap<ModuleId> as IntoIterator>::Item;
  type IntoIter = <IdentifierMap<ModuleId> as IntoIterator>::IntoIter;

  fn into_iter(self) -> Self::IntoIter {
    self.0.into_iter()
  }
}