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: u64

the last modification time of this file

§content_hash: String

hash to identify whether the content of the file changed

§source_name: PathBuf

identifier name see crate::utils::source_name()

§solc_config: SolcConfig

what 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

source

pub fn last_modified(&self) -> Duration

Returns the last modified timestamp Duration

source

pub fn find_artifact_path( &self, contract_name: impl AsRef<str> ) -> Option<&PathBuf>

Returns the artifact path for the contract name

use foundry_compilers::cache::CacheEntry;
entry.find_artifact_path("Greeter");
source

pub fn read_last_modification_date(file: impl AsRef<Path>) -> Result<u64>

Reads the last modification date from the file’s metadata

source

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.

source

pub fn contains_version(&self, version: &Version) -> bool

Returns true if the artifacts set contains the given version

source

pub fn artifacts_versions(&self) -> impl Iterator<Item = (&Version, &PathBuf)>

Iterator that yields all artifact files and their version

source

pub fn find_artifact( &self, contract: &str, version: &Version ) -> Option<&PathBuf>

Returns the artifact file for the contract and version pair

source

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

source

pub fn artifacts(&self) -> impl Iterator<Item = &PathBuf>

Iterator that yields all artifact files

source

pub fn artifacts_mut(&mut self) -> impl Iterator<Item = &mut PathBuf>

Mutable iterator over all artifact files

source

pub fn all_artifacts_exist(&self) -> bool

Checks if all artifact files exist

source

pub fn join_artifacts_files(&mut self, base: impl AsRef<Path>)

Sets the artifact’s paths to base adjoined to the artifact’s path.

source

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

source§

fn clone(&self) -> CacheEntry

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for CacheEntry

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de> Deserialize<'de> for CacheEntry

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl PartialEq for CacheEntry

source§

fn eq(&self, other: &CacheEntry) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Serialize for CacheEntry

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Eq for CacheEntry

source§

impl StructuralEq for CacheEntry

source§

impl StructuralPartialEq for CacheEntry

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,