Struct ethers_solc::cache::CacheEntry
source · pub struct CacheEntry {
pub last_modification_date: u64,
pub content_hash: String,
pub source_name: PathBuf,
pub solc_config: SolcConfig,
pub imports: BTreeSet<PathBuf>,
pub version_requirement: Option<String>,
pub artifacts: BTreeMap<String, BTreeMap<Version, PathBuf>>,
}Expand description
A CacheEntry in the cache file represents a solidity file
A solidity file can contain several contracts, for every contract a separate Artifact is
emitted. so the CacheEntry tracks the artifacts by name. A file can be compiled with multiple
solc versions generating version specific artifacts.
Fields§
§last_modification_date: u64the last modification time of this file
content_hash: Stringhash to identify whether the content of the file changed
source_name: PathBufidentifier name see crate::utils::source_name()
solc_config: SolcConfigwhat config was set when compiling this file
imports: BTreeSet<PathBuf>fully resolved imports of the file
all paths start relative from the project’s root: src/importedFile.sol
version_requirement: Option<String>The solidity version pragma
artifacts: BTreeMap<String, BTreeMap<Version, PathBuf>>all artifacts produced for this file
In theory a file can be compiled by different solc versions:
A(<=0.8.10) imports C(>0.4.0) and B(0.8.11) imports C(>0.4.0)
file C would be compiled twice, with 0.8.10 and 0.8.11, producing two different
artifacts.
This map tracks the artifacts by name -> (Version -> PathBuf).
This mimics the default artifacts directory structure
Implementations§
source§impl CacheEntry
impl CacheEntry
sourcepub fn last_modified(&self) -> Duration
pub fn last_modified(&self) -> Duration
Returns the last modified timestamp Duration
sourcepub fn find_artifact_path(
&self,
contract_name: impl AsRef<str>
) -> Option<&PathBuf>
pub fn find_artifact_path( &self, contract_name: impl AsRef<str> ) -> Option<&PathBuf>
Returns the artifact path for the contract name
use ethers_solc::cache::CacheEntry;
entry.find_artifact_path("Greeter");sourcepub fn read_last_modification_date(file: impl AsRef<Path>) -> Result<u64>
pub fn read_last_modification_date(file: impl AsRef<Path>) -> Result<u64>
Reads the last modification date from the file’s metadata
sourcepub fn retain_versions<'a, I>(&mut self, versions: I)where
I: IntoIterator<Item = &'a Version>,
pub fn retain_versions<'a, I>(&mut self, versions: I)where I: IntoIterator<Item = &'a Version>,
Retains only those artifacts that match the provided versions.
Removes an artifact entry if none of its versions is included in the versions set.
sourcepub fn contains_version(&self, version: &Version) -> bool
pub fn contains_version(&self, version: &Version) -> bool
Returns true if the artifacts set contains the given version
sourcepub fn artifacts_versions(&self) -> impl Iterator<Item = (&Version, &PathBuf)>
pub fn artifacts_versions(&self) -> impl Iterator<Item = (&Version, &PathBuf)>
Iterator that yields all artifact files and their version
sourcepub fn find_artifact(&self, contract: &str, version: &Version) -> Option<&PathBuf>
pub fn find_artifact(&self, contract: &str, version: &Version) -> Option<&PathBuf>
Returns the artifact file for the contract and version pair
sourcepub fn artifacts_for_version<'a>(
&'a self,
version: &'a Version
) -> impl Iterator<Item = &'a PathBuf> + 'a
pub fn artifacts_for_version<'a>( &'a self, version: &'a Version ) -> impl Iterator<Item = &'a PathBuf> + 'a
Iterator that yields all artifact files and their version
sourcepub fn artifacts(&self) -> impl Iterator<Item = &PathBuf>
pub fn artifacts(&self) -> impl Iterator<Item = &PathBuf>
Iterator that yields all artifact files
sourcepub fn artifacts_mut(&mut self) -> impl Iterator<Item = &mut PathBuf>
pub fn artifacts_mut(&mut self) -> impl Iterator<Item = &mut PathBuf>
Mutable iterator over all artifact files
sourcepub fn all_artifacts_exist(&self) -> bool
pub fn all_artifacts_exist(&self) -> bool
Checks if all artifact files exist
sourcepub fn join_artifacts_files(&mut self, base: impl AsRef<Path>)
pub fn join_artifacts_files(&mut self, base: impl AsRef<Path>)
Sets the artifact’s paths to base adjoined to the artifact’s path.
sourcepub fn strip_artifact_files_prefixes(&mut self, base: impl AsRef<Path>)
pub fn strip_artifact_files_prefixes(&mut self, base: impl AsRef<Path>)
Removes base from the artifact’s path
Trait Implementations§
source§impl Clone for CacheEntry
impl Clone for CacheEntry
source§fn clone(&self) -> CacheEntry
fn clone(&self) -> CacheEntry
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moresource§impl Debug for CacheEntry
impl Debug for CacheEntry
source§impl<'de> Deserialize<'de> for CacheEntry
impl<'de> Deserialize<'de> for CacheEntry
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where __D: Deserializer<'de>,
source§impl PartialEq<CacheEntry> for CacheEntry
impl PartialEq<CacheEntry> for CacheEntry
source§fn eq(&self, other: &CacheEntry) -> bool
fn eq(&self, other: &CacheEntry) -> bool
self and other values to be equal, and is used
by ==.