Struct ethers_solc::Artifacts
source · pub struct Artifacts<T>(pub FileToContractsMap<Vec<ArtifactFile<T>>>);
Expand description
Represents a set of Artifacts
Tuple Fields§
§0: FileToContractsMap<Vec<ArtifactFile<T>>>
Implementations§
source§impl<T> Artifacts<T>
impl<T> Artifacts<T>
sourcepub fn slash_paths(&mut self)
pub fn slash_paths(&mut self)
Converts all \\
separators in all paths to /
pub fn into_inner(self) -> FileToContractsMap<Vec<ArtifactFile<T>>>
sourcepub fn join_all(&mut self, root: impl AsRef<Path>) -> &mut Self
pub fn join_all(&mut self, root: impl AsRef<Path>) -> &mut Self
Sets the artifact files location to root
adjoined to self.file
.
sourcepub fn strip_prefix_all(&mut self, base: impl AsRef<Path>) -> &mut Self
pub fn strip_prefix_all(&mut self, base: impl AsRef<Path>) -> &mut Self
Removes base
from all artifacts
sourcepub fn find_artifact(
&self,
file: &str,
contract_name: &str,
version: &Version
) -> Option<&ArtifactFile<T>>
pub fn find_artifact( &self, file: &str, contract_name: &str, version: &Version ) -> Option<&ArtifactFile<T>>
Returns the Artifact
with matching file, contract name and version
sourcepub fn has_contract_artifact(
&self,
contract_name: &str,
artifact_path: &Path
) -> bool
pub fn has_contract_artifact( &self, contract_name: &str, artifact_path: &Path ) -> bool
Returns true if this type contains an artifact with the given path for the given contract
sourcepub fn has_artifact(&self, artifact_path: &Path) -> bool
pub fn has_artifact(&self, artifact_path: &Path) -> bool
Returns true if this type contains an artifact with the given path
sourcepub fn artifact_files(&self) -> impl Iterator<Item = &ArtifactFile<T>>
pub fn artifact_files(&self) -> impl Iterator<Item = &ArtifactFile<T>>
Iterate over all artifact files
sourcepub fn artifact_files_mut(
&mut self
) -> impl Iterator<Item = &mut ArtifactFile<T>>
pub fn artifact_files_mut( &mut self ) -> impl Iterator<Item = &mut ArtifactFile<T>>
Iterate over all artifact files
sourcepub fn artifacts<O: ArtifactOutput<Artifact = T>>(
&self
) -> impl Iterator<Item = (ArtifactId, &T)> + '_
pub fn artifacts<O: ArtifactOutput<Artifact = T>>( &self ) -> impl Iterator<Item = (ArtifactId, &T)> + '_
Returns an iterator over all artifacts and <file name:contract name>
.
Borrowed version of Self::into_artifacts
.
sourcepub fn into_artifacts<O: ArtifactOutput<Artifact = T>>(
self
) -> impl Iterator<Item = (ArtifactId, T)>
pub fn into_artifacts<O: ArtifactOutput<Artifact = T>>( self ) -> impl Iterator<Item = (ArtifactId, T)>
Returns an iterator over all artifacts and <file name:contract name>
sourcepub fn artifacts_with_files(
&self
) -> impl Iterator<Item = (&String, &String, &T)> + '_
pub fn artifacts_with_files( &self ) -> impl Iterator<Item = (&String, &String, &T)> + '_
Returns an iterator that yields the tuple (file, contract name, artifact)
NOTE this returns the path as is
Borrowed version of Self::into_artifacts_with_files
.
sourcepub fn into_artifacts_with_files(
self
) -> impl Iterator<Item = (String, String, T)>
pub fn into_artifacts_with_files( self ) -> impl Iterator<Item = (String, String, T)>
Returns an iterator that yields the tuple (file, contract name, artifact)
NOTE this returns the path as is
sourcepub fn into_stripped_file_prefixes(self, base: impl AsRef<Path>) -> Self
pub fn into_stripped_file_prefixes(self, base: impl AsRef<Path>) -> Self
Strips the given prefix from all artifact file paths to make them relative to the given
root
argument
sourcepub fn find_first(&self, contract_name: impl AsRef<str>) -> Option<&T>
pub fn find_first(&self, contract_name: impl AsRef<str>) -> Option<&T>
Finds the first artifact T
with a matching contract name
sourcepub fn find(
&self,
path: impl AsRef<str>,
contract: impl AsRef<str>
) -> Option<&T>
pub fn find( &self, path: impl AsRef<str>, contract: impl AsRef<str> ) -> Option<&T>
Finds the artifact with matching path and name
sourcepub fn remove(
&mut self,
path: impl AsRef<str>,
contract: impl AsRef<str>
) -> Option<T>
pub fn remove( &mut self, path: impl AsRef<str>, contract: impl AsRef<str> ) -> Option<T>
Removes the artifact with matching file and name
sourcepub fn remove_first(&mut self, contract_name: impl AsRef<str>) -> Option<T>
pub fn remove_first(&mut self, contract_name: impl AsRef<str>) -> Option<T>
Removes the first artifact T
with a matching contract name
Note: if there are multiple artifacts (contract compiled with different solc) then this returns the first artifact in that set
Methods from Deref<Target = FileToContractsMap<Vec<ArtifactFile<T>>>>§
1.0.0 · sourcepub fn get<Q>(&self, key: &Q) -> Option<&V>
pub fn get<Q>(&self, key: &Q) -> Option<&V>
Returns a reference to the value corresponding to the key.
The key may be any borrowed form of the map’s key type, but the ordering on the borrowed form must match the ordering on the key type.
§Examples
use std::collections::BTreeMap;
let mut map = BTreeMap::new();
map.insert(1, "a");
assert_eq!(map.get(&1), Some(&"a"));
assert_eq!(map.get(&2), None);
1.40.0 · sourcepub fn get_key_value<Q>(&self, k: &Q) -> Option<(&K, &V)>
pub fn get_key_value<Q>(&self, k: &Q) -> Option<(&K, &V)>
Returns the key-value pair corresponding to the supplied key.
The supplied key may be any borrowed form of the map’s key type, but the ordering on the borrowed form must match the ordering on the key type.
§Examples
use std::collections::BTreeMap;
let mut map = BTreeMap::new();
map.insert(1, "a");
assert_eq!(map.get_key_value(&1), Some((&1, &"a")));
assert_eq!(map.get_key_value(&2), None);
1.66.0 · sourcepub fn first_key_value(&self) -> Option<(&K, &V)>where
K: Ord,
pub fn first_key_value(&self) -> Option<(&K, &V)>where
K: Ord,
Returns the first key-value pair in the map. The key in this pair is the minimum key in the map.
§Examples
use std::collections::BTreeMap;
let mut map = BTreeMap::new();
assert_eq!(map.first_key_value(), None);
map.insert(1, "b");
map.insert(2, "a");
assert_eq!(map.first_key_value(), Some((&1, &"b")));
1.66.0 · sourcepub fn last_key_value(&self) -> Option<(&K, &V)>where
K: Ord,
pub fn last_key_value(&self) -> Option<(&K, &V)>where
K: Ord,
Returns the last key-value pair in the map. The key in this pair is the maximum key in the map.
§Examples
use std::collections::BTreeMap;
let mut map = BTreeMap::new();
map.insert(1, "b");
map.insert(2, "a");
assert_eq!(map.last_key_value(), Some((&2, &"a")));
1.0.0 · sourcepub fn contains_key<Q>(&self, key: &Q) -> bool
pub fn contains_key<Q>(&self, key: &Q) -> bool
Returns true
if the map contains a value for the specified key.
The key may be any borrowed form of the map’s key type, but the ordering on the borrowed form must match the ordering on the key type.
§Examples
use std::collections::BTreeMap;
let mut map = BTreeMap::new();
map.insert(1, "a");
assert_eq!(map.contains_key(&1), true);
assert_eq!(map.contains_key(&2), false);
1.17.0 · sourcepub fn range<T, R>(&self, range: R) -> Range<'_, K, V>
pub fn range<T, R>(&self, range: R) -> Range<'_, K, V>
Constructs a double-ended iterator over a sub-range of elements in the map.
The simplest way is to use the range syntax min..max
, thus range(min..max)
will
yield elements from min (inclusive) to max (exclusive).
The range may also be entered as (Bound<T>, Bound<T>)
, so for example
range((Excluded(4), Included(10)))
will yield a left-exclusive, right-inclusive
range from 4 to 10.
§Panics
Panics if range start > end
.
Panics if range start == end
and both bounds are Excluded
.
§Examples
use std::collections::BTreeMap;
use std::ops::Bound::Included;
let mut map = BTreeMap::new();
map.insert(3, "a");
map.insert(5, "b");
map.insert(8, "c");
for (&key, &value) in map.range((Included(&4), Included(&8))) {
println!("{key}: {value}");
}
assert_eq!(Some((&5, &"b")), map.range(4..).next());
1.0.0 · sourcepub fn iter(&self) -> Iter<'_, K, V>
pub fn iter(&self) -> Iter<'_, K, V>
Gets an iterator over the entries of the map, sorted by key.
§Examples
use std::collections::BTreeMap;
let mut map = BTreeMap::new();
map.insert(3, "c");
map.insert(2, "b");
map.insert(1, "a");
for (key, value) in map.iter() {
println!("{key}: {value}");
}
let (first_key, first_value) = map.iter().next().unwrap();
assert_eq!((*first_key, *first_value), (1, "a"));
1.0.0 · sourcepub fn keys(&self) -> Keys<'_, K, V>
pub fn keys(&self) -> Keys<'_, K, V>
Gets an iterator over the keys of the map, in sorted order.
§Examples
use std::collections::BTreeMap;
let mut a = BTreeMap::new();
a.insert(2, "b");
a.insert(1, "a");
let keys: Vec<_> = a.keys().cloned().collect();
assert_eq!(keys, [1, 2]);
1.0.0 · sourcepub fn values(&self) -> Values<'_, K, V>
pub fn values(&self) -> Values<'_, K, V>
Gets an iterator over the values of the map, in order by key.
§Examples
use std::collections::BTreeMap;
let mut a = BTreeMap::new();
a.insert(1, "hello");
a.insert(2, "goodbye");
let values: Vec<&str> = a.values().cloned().collect();
assert_eq!(values, ["hello", "goodbye"]);
1.0.0 · sourcepub fn len(&self) -> usize
pub fn len(&self) -> usize
Returns the number of elements in the map.
§Examples
use std::collections::BTreeMap;
let mut a = BTreeMap::new();
assert_eq!(a.len(), 0);
a.insert(1, "a");
assert_eq!(a.len(), 1);
1.0.0 · sourcepub fn is_empty(&self) -> bool
pub fn is_empty(&self) -> bool
Returns true
if the map contains no elements.
§Examples
use std::collections::BTreeMap;
let mut a = BTreeMap::new();
assert!(a.is_empty());
a.insert(1, "a");
assert!(!a.is_empty());
sourcepub fn lower_bound<Q>(&self, bound: Bound<&Q>) -> Cursor<'_, K, V>
🔬This is a nightly-only experimental API. (btree_cursors
)
pub fn lower_bound<Q>(&self, bound: Bound<&Q>) -> Cursor<'_, K, V>
btree_cursors
)Returns a Cursor
pointing at the gap before the smallest key
greater than the given bound.
Passing Bound::Included(x)
will return a cursor pointing to the
gap before the smallest key greater than or equal to x
.
Passing Bound::Excluded(x)
will return a cursor pointing to the
gap before the smallest key greater than x
.
Passing Bound::Unbounded
will return a cursor pointing to the
gap before the smallest key in the map.
§Examples
#![feature(btree_cursors)]
use std::collections::BTreeMap;
use std::ops::Bound;
let map = BTreeMap::from([
(1, "a"),
(2, "b"),
(3, "c"),
(4, "d"),
]);
let cursor = map.lower_bound(Bound::Included(&2));
assert_eq!(cursor.peek_prev(), Some((&1, &"a")));
assert_eq!(cursor.peek_next(), Some((&2, &"b")));
let cursor = map.lower_bound(Bound::Excluded(&2));
assert_eq!(cursor.peek_prev(), Some((&2, &"b")));
assert_eq!(cursor.peek_next(), Some((&3, &"c")));
let cursor = map.lower_bound(Bound::Unbounded);
assert_eq!(cursor.peek_prev(), None);
assert_eq!(cursor.peek_next(), Some((&1, &"a")));
sourcepub fn upper_bound<Q>(&self, bound: Bound<&Q>) -> Cursor<'_, K, V>
🔬This is a nightly-only experimental API. (btree_cursors
)
pub fn upper_bound<Q>(&self, bound: Bound<&Q>) -> Cursor<'_, K, V>
btree_cursors
)Returns a Cursor
pointing at the gap after the greatest key
smaller than the given bound.
Passing Bound::Included(x)
will return a cursor pointing to the
gap after the greatest key smaller than or equal to x
.
Passing Bound::Excluded(x)
will return a cursor pointing to the
gap after the greatest key smaller than x
.
Passing Bound::Unbounded
will return a cursor pointing to the
gap after the greatest key in the map.
§Examples
#![feature(btree_cursors)]
use std::collections::BTreeMap;
use std::ops::Bound;
let map = BTreeMap::from([
(1, "a"),
(2, "b"),
(3, "c"),
(4, "d"),
]);
let cursor = map.upper_bound(Bound::Included(&3));
assert_eq!(cursor.peek_prev(), Some((&3, &"c")));
assert_eq!(cursor.peek_next(), Some((&4, &"d")));
let cursor = map.upper_bound(Bound::Excluded(&3));
assert_eq!(cursor.peek_prev(), Some((&2, &"b")));
assert_eq!(cursor.peek_next(), Some((&3, &"c")));
let cursor = map.upper_bound(Bound::Unbounded);
assert_eq!(cursor.peek_prev(), Some((&4, &"d")));
assert_eq!(cursor.peek_next(), None);
Trait Implementations§
source§impl<T> AsMut<BTreeMap<String, BTreeMap<String, Vec<ArtifactFile<T>>>>> for Artifacts<T>
impl<T> AsMut<BTreeMap<String, BTreeMap<String, Vec<ArtifactFile<T>>>>> for Artifacts<T>
source§fn as_mut(&mut self) -> &mut FileToContractsMap<Vec<ArtifactFile<T>>>
fn as_mut(&mut self) -> &mut FileToContractsMap<Vec<ArtifactFile<T>>>
source§impl<T> AsRef<BTreeMap<String, BTreeMap<String, Vec<ArtifactFile<T>>>>> for Artifacts<T>
impl<T> AsRef<BTreeMap<String, BTreeMap<String, Vec<ArtifactFile<T>>>>> for Artifacts<T>
source§fn as_ref(&self) -> &FileToContractsMap<Vec<ArtifactFile<T>>>
fn as_ref(&self) -> &FileToContractsMap<Vec<ArtifactFile<T>>>
source§impl<T> From<BTreeMap<String, BTreeMap<String, Vec<ArtifactFile<T>>>>> for Artifacts<T>
impl<T> From<BTreeMap<String, BTreeMap<String, Vec<ArtifactFile<T>>>>> for Artifacts<T>
source§fn from(m: FileToContractsMap<Vec<ArtifactFile<T>>>) -> Self
fn from(m: FileToContractsMap<Vec<ArtifactFile<T>>>) -> Self
source§impl<'a, T> IntoIterator for &'a Artifacts<T>
impl<'a, T> IntoIterator for &'a Artifacts<T>
source§impl<T> IntoIterator for Artifacts<T>
impl<T> IntoIterator for Artifacts<T>
source§impl<T: PartialEq> PartialEq for Artifacts<T>
impl<T: PartialEq> PartialEq for Artifacts<T>
impl<T: Eq> Eq for Artifacts<T>
impl<T> StructuralPartialEq for Artifacts<T>
Auto Trait Implementations§
impl<T> RefUnwindSafe for Artifacts<T>where
T: RefUnwindSafe,
impl<T> Send for Artifacts<T>where
T: Send,
impl<T> Sync for Artifacts<T>where
T: Sync,
impl<T> Unpin for Artifacts<T>
impl<T> UnwindSafe for Artifacts<T>where
T: RefUnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.