rspack_core 0.100.1

rspack core
Documentation
use rustc_hash::FxHashMap;

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

#[derive(Debug, Default)]
pub struct ChunkHashesArtifact {
  chunk_to_hashes: FxHashMap<ChunkUkey, ChunkHashesResult>,
}

impl ArtifactExt for ChunkHashesArtifact {
  const PASS: IncrementalPasses = IncrementalPasses::CHUNKS_HASHES;
}

impl ChunkHashesArtifact {
  pub fn is_empty(&self) -> bool {
    self.chunk_to_hashes.is_empty()
  }

  pub fn get(&self, chunk: &ChunkUkey) -> Option<&ChunkHashesResult> {
    self.chunk_to_hashes.get(chunk)
  }

  pub fn set_hashes(&mut self, chunk: ChunkUkey, hashes: ChunkHashesResult) -> bool {
    if let Some(old) = self.chunk_to_hashes.get(&chunk)
      && old == &hashes
    {
      false
    } else {
      self.chunk_to_hashes.insert(chunk, hashes);
      true
    }
  }

  pub fn remove(&mut self, chunk: &ChunkUkey) -> Option<ChunkHashesResult> {
    self.chunk_to_hashes.remove(chunk)
  }

  pub fn retain(&mut self, f: impl FnMut(&ChunkUkey, &mut ChunkHashesResult) -> bool) {
    self.chunk_to_hashes.retain(f)
  }

  pub fn clear(&mut self) {
    self.chunk_to_hashes.clear();
  }
}