rspack_core/artifacts/
module_ids_artifact.rs1use 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}