pub struct AggregatedCompilerOutput {
pub errors: Vec<Error>,
pub sources: VersionedSourceFiles,
pub contracts: VersionedContracts,
pub build_infos: BTreeMap<Version, RawBuildInfo>,
}
Expand description
The aggregated output of (multiple) compile jobs
This is effectively a solc version aware CompilerOutput
Fields§
§errors: Vec<Error>
all errors from all CompilerOutput
sources: VersionedSourceFiles
All source files combined with the solc version used to compile them
contracts: VersionedContracts
All compiled contracts combined with the solc version used to compile them
build_infos: BTreeMap<Version, RawBuildInfo>
Implementations§
Source§impl AggregatedCompilerOutput
impl AggregatedCompilerOutput
Sourcepub fn slash_paths(&mut self)
pub fn slash_paths(&mut self)
Converts all \\
separators in all paths to /
Sourcepub fn has_error(
&self,
ignored_error_codes: &[u64],
compiler_severity_filter: &Severity,
) -> bool
pub fn has_error( &self, ignored_error_codes: &[u64], compiler_severity_filter: &Severity, ) -> bool
Whether the output contains a compiler error
Sourcepub fn has_warning(&self, ignored_error_codes: &[u64]) -> bool
pub fn has_warning(&self, ignored_error_codes: &[u64]) -> bool
Whether the output contains a compiler warning
pub fn diagnostics<'a>( &'a self, ignored_error_codes: &'a [u64], compiler_severity_filter: Severity, ) -> OutputDiagnostics<'_>
pub fn is_empty(&self) -> bool
pub fn is_unchanged(&self) -> bool
pub fn extend_all<I>(&mut self, out: I)
Sourcepub fn extend(&mut self, version: Version, output: CompilerOutput)
pub fn extend(&mut self, version: Version, output: CompilerOutput)
adds a new CompilerOutput
to the aggregated output
Sourcepub fn write_build_infos(
&self,
build_info_dir: impl AsRef<Path>,
) -> Result<(), SolcIoError>
pub fn write_build_infos( &self, build_info_dir: impl AsRef<Path>, ) -> Result<(), SolcIoError>
Creates all BuildInfo
files in the given build_info_dir
There can be multiple BuildInfo
, since we support multiple versions.
The created files have the md5 hash {_format,solcVersion,solcLongVersion,input}
as their
file name
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 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 output = project.compile().unwrap().output();
let contract = output.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 output = project.compile().unwrap().output();
let contract = output.remove("src/Greeter.sol", "Greeter").unwrap();
Sourcepub fn remove_contract<'a>(
&mut self,
info: impl Into<ContractInfoRef<'a>>,
) -> Option<Contract>
pub fn remove_contract<'a>( &mut self, info: impl Into<ContractInfoRef<'a>>, ) -> Option<Contract>
Removes the contract with matching path and name using the <path>:<contractname>
pattern
where path
is optional.
If the path
segment is None
, then the first matching Contract
is returned, see
Self::remove_first
§Example
use ethers_solc::Project;
use ethers_solc::artifacts::*;
use ethers_solc::info::ContractInfo;
let mut output = project.compile().unwrap().output();
let info = ContractInfo::new("src/Greeter.sol:Greeter");
let contract = output.remove_contract(&info).unwrap();
Sourcepub fn contracts_iter(&self) -> impl Iterator<Item = (&String, &Contract)>
pub fn contracts_iter(&self) -> impl Iterator<Item = (&String, &Contract)>
Iterate over all contracts and their names
Sourcepub fn contracts_into_iter(self) -> impl Iterator<Item = (String, Contract)>
pub fn contracts_into_iter(self) -> impl Iterator<Item = (String, Contract)>
Iterate over all contracts and their names
Sourcepub fn contracts_with_files_iter(
&self,
) -> impl Iterator<Item = (&String, &String, &Contract)>
pub fn contracts_with_files_iter( &self, ) -> impl Iterator<Item = (&String, &String, &Contract)>
Returns an iterator over (file
, name
, Contract
)
Sourcepub fn contracts_with_files_into_iter(
self,
) -> impl Iterator<Item = (String, String, Contract)>
pub fn contracts_with_files_into_iter( self, ) -> impl Iterator<Item = (String, String, Contract)>
Returns an iterator over (file
, name
, Contract
)
Sourcepub fn contracts_with_files_and_version_iter(
&self,
) -> impl Iterator<Item = (&String, &String, &Contract, &Version)>
pub fn contracts_with_files_and_version_iter( &self, ) -> impl Iterator<Item = (&String, &String, &Contract, &Version)>
Returns an iterator over (file
, name
, Contract
, Version
)
Sourcepub fn contracts_with_files_and_version_into_iter(
self,
) -> impl Iterator<Item = (String, String, Contract, Version)>
pub fn contracts_with_files_and_version_into_iter( self, ) -> impl Iterator<Item = (String, String, Contract, Version)>
Returns an iterator over (file
, name
, Contract
, Version
)
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
§Example
use ethers_solc::Project;
use ethers_solc::artifacts::*;
let output = project.compile().unwrap().output();
let contract = output.get("src/Greeter.sol", "Greeter").unwrap();
Sourcepub fn split(self) -> (VersionedSourceFiles, VersionedContracts)
pub fn split(self) -> (VersionedSourceFiles, VersionedContracts)
Returns the output’s source files and contracts separately, wrapped in helper types that provide several helper methods
§Example
use ethers_solc::Project;
let output = project.compile().unwrap().output();
let (sources, contracts) = output.split();
Sourcepub fn with_stripped_file_prefixes(self, base: impl AsRef<Path>) -> Self
pub fn with_stripped_file_prefixes(self, base: impl AsRef<Path>) -> Self
Strips the given prefix from all file paths to make them relative to the given
base
argument.
Convenience method for Self::strip_prefix_all() that consumes the type.
§Example
Make all sources and contracts relative to the project’s root directory
use ethers_solc::Project;
let project = Project::builder().build().unwrap();
let output = project.compile().unwrap().output().with_stripped_file_prefixes(project.root());
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
Trait Implementations§
Source§impl Clone for AggregatedCompilerOutput
impl Clone for AggregatedCompilerOutput
Source§fn clone(&self) -> AggregatedCompilerOutput
fn clone(&self) -> AggregatedCompilerOutput
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for AggregatedCompilerOutput
impl Debug for AggregatedCompilerOutput
Source§impl Default for AggregatedCompilerOutput
impl Default for AggregatedCompilerOutput
Source§fn default() -> AggregatedCompilerOutput
fn default() -> AggregatedCompilerOutput
Source§impl<'de> Deserialize<'de> for AggregatedCompilerOutput
impl<'de> Deserialize<'de> for AggregatedCompilerOutput
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 for AggregatedCompilerOutput
impl PartialEq for AggregatedCompilerOutput
Source§impl Serialize for AggregatedCompilerOutput
impl Serialize for AggregatedCompilerOutput
impl StructuralPartialEq for AggregatedCompilerOutput
Auto Trait Implementations§
impl Freeze for AggregatedCompilerOutput
impl RefUnwindSafe for AggregatedCompilerOutput
impl Send for AggregatedCompilerOutput
impl Sync for AggregatedCompilerOutput
impl Unpin for AggregatedCompilerOutput
impl UnwindSafe for AggregatedCompilerOutput
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<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more