Struct ethers_solc::contracts::VersionedContracts
source · pub struct VersionedContracts(pub FileToContractsMap<Vec<VersionedContract>>);
Expand description
file -> [(contract name -> Contract + solc version)]
Tuple Fields§
§0: FileToContractsMap<Vec<VersionedContract>>
Implementations§
source§impl VersionedContracts
impl VersionedContracts
sourcepub fn slash_paths(&mut self)
pub fn slash_paths(&mut self)
Converts all \\
separators in all paths to /
pub fn is_empty(&self) -> bool
pub fn len(&self) -> usize
sourcepub fn find_first(
&self,
contract: impl AsRef<str>
) -> Option<CompactContractRef<'_>>
pub fn find_first( &self, contract: impl AsRef<str> ) -> Option<CompactContractRef<'_>>
Finds the first contract with the given name
§Example
use ethers_solc::Project;
use ethers_solc::artifacts::*;
let output = project.compile().unwrap().output();
let contract = output.find_first("Greeter").unwrap();
sourcepub fn find(
&self,
path: impl AsRef<str>,
contract: impl AsRef<str>
) -> Option<CompactContractRef<'_>>
pub fn find( &self, path: impl AsRef<str>, contract: impl AsRef<str> ) -> Option<CompactContractRef<'_>>
Finds the contract with matching path and name
§Example
use ethers_solc::Project;
use ethers_solc::artifacts::*;
let output = project.compile().unwrap().output();
let contract = output.contracts.find("src/Greeter.sol", "Greeter").unwrap();
sourcepub fn remove_first(&mut self, contract: impl AsRef<str>) -> Option<Contract>
pub fn remove_first(&mut self, contract: impl AsRef<str>) -> Option<Contract>
Removes the first contract with the given name from the set
§Example
use ethers_solc::Project;
use ethers_solc::artifacts::*;
let (_, mut contracts) = project.compile().unwrap().output().split();
let contract = contracts.remove_first("Greeter").unwrap();
sourcepub fn remove(
&mut self,
path: impl AsRef<str>,
contract: impl AsRef<str>
) -> Option<Contract>
pub fn remove( &mut self, path: impl AsRef<str>, contract: impl AsRef<str> ) -> Option<Contract>
Removes the contract with matching path and name
§Example
use ethers_solc::Project;
use ethers_solc::artifacts::*;
let (_, mut contracts) = project.compile().unwrap().output().split();
let contract = contracts.remove("src/Greeter.sol", "Greeter").unwrap();
sourcepub fn get(
&self,
path: impl AsRef<str>,
contract: impl AsRef<str>
) -> Option<CompactContractRef<'_>>
pub fn get( &self, path: impl AsRef<str>, contract: impl AsRef<str> ) -> Option<CompactContractRef<'_>>
Given the contract file’s path and the contract’s name, tries to return the contract’s bytecode, runtime bytecode, and abi
sourcepub fn contracts(&self) -> impl Iterator<Item = (&String, &Contract)>
pub fn contracts(&self) -> impl Iterator<Item = (&String, &Contract)>
Iterate over all contracts and their names
sourcepub fn contracts_with_files(
&self
) -> impl Iterator<Item = (&String, &String, &Contract)>
pub fn contracts_with_files( &self ) -> impl Iterator<Item = (&String, &String, &Contract)>
Returns an iterator over (file
, name
, Contract
)
sourcepub fn contracts_with_files_and_version(
&self
) -> impl Iterator<Item = (&String, &String, &Contract, &Version)>
pub fn contracts_with_files_and_version( &self ) -> impl Iterator<Item = (&String, &String, &Contract, &Version)>
Returns an iterator over (file
, name
, Contract
, Version
)
sourcepub fn into_contracts(self) -> impl Iterator<Item = (String, Contract)>
pub fn into_contracts(self) -> impl Iterator<Item = (String, Contract)>
Returns an iterator over all contracts and their source names.
use std::collections::BTreeMap;
use ethers_solc::{ artifacts::*, Artifact };
use ethers_solc::artifacts::contract::CompactContractSome;
let contracts: BTreeMap<String, CompactContractSome> = contracts
.into_contracts()
.map(|(k, c)| (k, c.into_compact_contract().unwrap()))
.collect();
sourcepub fn into_contracts_with_files(
self
) -> impl Iterator<Item = (String, String, Contract)>
pub fn into_contracts_with_files( self ) -> impl Iterator<Item = (String, String, Contract)>
Returns an iterator over (file
, name
, Contract
)
sourcepub fn into_contracts_with_files_and_version(
self
) -> impl Iterator<Item = (String, String, Contract, Version)>
pub fn into_contracts_with_files_and_version( self ) -> impl Iterator<Item = (String, String, Contract, Version)>
Returns an iterator over (file
, name
, Contract
, Version
)
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 contract’s file paths 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 contract paths
Methods from Deref<Target = FileToContractsMap<Vec<VersionedContract>>>§
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 AsMut<BTreeMap<String, BTreeMap<String, Vec<VersionedContract>>>> for VersionedContracts
impl AsMut<BTreeMap<String, BTreeMap<String, Vec<VersionedContract>>>> for VersionedContracts
source§fn as_mut(&mut self) -> &mut FileToContractsMap<Vec<VersionedContract>>
fn as_mut(&mut self) -> &mut FileToContractsMap<Vec<VersionedContract>>
source§impl AsRef<BTreeMap<String, BTreeMap<String, Vec<VersionedContract>>>> for VersionedContracts
impl AsRef<BTreeMap<String, BTreeMap<String, Vec<VersionedContract>>>> for VersionedContracts
source§fn as_ref(&self) -> &FileToContractsMap<Vec<VersionedContract>>
fn as_ref(&self) -> &FileToContractsMap<Vec<VersionedContract>>
source§impl Clone for VersionedContracts
impl Clone for VersionedContracts
source§fn clone(&self) -> VersionedContracts
fn clone(&self) -> VersionedContracts
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for VersionedContracts
impl Debug for VersionedContracts
source§impl Default for VersionedContracts
impl Default for VersionedContracts
source§fn default() -> VersionedContracts
fn default() -> VersionedContracts
source§impl Deref for VersionedContracts
impl Deref for VersionedContracts
source§impl<'de> Deserialize<'de> for VersionedContracts
impl<'de> Deserialize<'de> for VersionedContracts
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 IntoIterator for VersionedContracts
impl IntoIterator for VersionedContracts
source§impl PartialEq for VersionedContracts
impl PartialEq for VersionedContracts
source§fn eq(&self, other: &VersionedContracts) -> bool
fn eq(&self, other: &VersionedContracts) -> bool
self
and other
values to be equal, and is used
by ==
.