rspack_core 0.100.1

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

use rustc_hash::FxHashMap;

use crate::{ArtifactExt, ChunkRenderResult, ChunkUkey, incremental::IncrementalPasses};

#[derive(Debug, Default, Clone)]
pub struct ChunkRenderArtifact(FxHashMap<ChunkUkey, ChunkRenderResult>);

impl ArtifactExt for ChunkRenderArtifact {
  const PASS: IncrementalPasses = IncrementalPasses::CHUNK_ASSET;
}

impl Deref for ChunkRenderArtifact {
  type Target = FxHashMap<ChunkUkey, ChunkRenderResult>;

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

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

impl From<FxHashMap<ChunkUkey, ChunkRenderResult>> for ChunkRenderArtifact {
  fn from(value: FxHashMap<ChunkUkey, ChunkRenderResult>) -> Self {
    Self(value)
  }
}

impl From<ChunkRenderArtifact> for FxHashMap<ChunkUkey, ChunkRenderResult> {
  fn from(value: ChunkRenderArtifact) -> Self {
    value.0
  }
}

impl FromIterator<<FxHashMap<ChunkUkey, ChunkRenderResult> as IntoIterator>::Item>
  for ChunkRenderArtifact
{
  fn from_iter<
    T: IntoIterator<Item = <FxHashMap<ChunkUkey, ChunkRenderResult> as IntoIterator>::Item>,
  >(
    iter: T,
  ) -> Self {
    Self(FxHashMap::from_iter(iter))
  }
}

impl IntoIterator for ChunkRenderArtifact {
  type Item = <FxHashMap<ChunkUkey, ChunkRenderResult> as IntoIterator>::Item;
  type IntoIter = <FxHashMap<ChunkUkey, ChunkRenderResult> as IntoIterator>::IntoIter;

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