Skip to main content

rspack_core/artifacts/
module_ids_artifact.rs

1use std::ops::{Deref, DerefMut};
2
3use rspack_collections::IdentifierMap;
4
5use crate::{ArtifactExt, ModuleId, incremental::IncrementalPasses};
6
7#[derive(Debug, Default, Clone)]
8pub struct ModuleIdsArtifact(IdentifierMap<ModuleId>);
9
10impl ArtifactExt for ModuleIdsArtifact {
11  const PASS: IncrementalPasses = IncrementalPasses::MODULE_IDS;
12}
13
14impl Deref for ModuleIdsArtifact {
15  type Target = IdentifierMap<ModuleId>;
16
17  fn deref(&self) -> &Self::Target {
18    &self.0
19  }
20}
21
22impl DerefMut for ModuleIdsArtifact {
23  fn deref_mut(&mut self) -> &mut Self::Target {
24    &mut self.0
25  }
26}
27
28impl From<IdentifierMap<ModuleId>> for ModuleIdsArtifact {
29  fn from(value: IdentifierMap<ModuleId>) -> Self {
30    Self(value)
31  }
32}
33
34impl From<ModuleIdsArtifact> for IdentifierMap<ModuleId> {
35  fn from(value: ModuleIdsArtifact) -> Self {
36    value.0
37  }
38}
39
40impl FromIterator<<IdentifierMap<ModuleId> as IntoIterator>::Item> for ModuleIdsArtifact {
41  fn from_iter<T: IntoIterator<Item = <IdentifierMap<ModuleId> as IntoIterator>::Item>>(
42    iter: T,
43  ) -> Self {
44    Self(IdentifierMap::from_iter(iter))
45  }
46}
47
48impl IntoIterator for ModuleIdsArtifact {
49  type Item = <IdentifierMap<ModuleId> as IntoIterator>::Item;
50  type IntoIter = <IdentifierMap<ModuleId> as IntoIterator>::IntoIter;
51
52  fn into_iter(self) -> Self::IntoIter {
53    self.0.into_iter()
54  }
55}