Struct foundry_compilers_artifacts::Settings
source · pub struct Settings {
pub stop_after: Option<String>,
pub remappings: Vec<Remapping>,
pub optimizer: Optimizer,
pub model_checker: Option<ModelCheckerSettings>,
pub metadata: Option<SettingsMetadata>,
pub output_selection: OutputSelection,
pub evm_version: Option<EvmVersion>,
pub via_ir: Option<bool>,
pub debug: Option<DebuggingSettings>,
pub libraries: Libraries,
pub eof_version: Option<EofVersion>,
}
Fields§
§stop_after: Option<String>
Stop compilation after the given stage. since 0.8.11: only “parsing” is valid here
remappings: Vec<Remapping>
§optimizer: Optimizer
Custom Optimizer settings
model_checker: Option<ModelCheckerSettings>
Model Checker options.
metadata: Option<SettingsMetadata>
Metadata settings
output_selection: OutputSelection
This field can be used to select desired outputs based on file and contract names. If this field is omitted, then the compiler loads and does type checking, but will not generate any outputs apart from errors.
evm_version: Option<EvmVersion>
§via_ir: Option<bool>
Change compilation pipeline to go through the Yul intermediate representation. This is false by default.
debug: Option<DebuggingSettings>
§libraries: Libraries
Addresses of the libraries. If not all libraries are given here, it can result in unlinked objects whose output data is different.
The top level key is the name of the source file where the library is used. If remappings are used, this source file should match the global path after remappings were applied. If this key is an empty string, that refers to a global level.
eof_version: Option<EofVersion>
Specify EOF version to produce.
Implementations§
source§impl Settings
impl Settings
sourcepub fn new(output_selection: impl Into<OutputSelection>) -> Settings
pub fn new(output_selection: impl Into<OutputSelection>) -> Settings
Creates a new Settings
instance with the given output_selection
sourcepub fn sanitized(self, version: &Version, language: SolcLanguage) -> Settings
pub fn sanitized(self, version: &Version, language: SolcLanguage) -> Settings
Consumes the type and returns a Settings::sanitize version
sourcepub fn sanitize(&mut self, version: &Version, language: SolcLanguage)
pub fn sanitize(&mut self, version: &Version, language: SolcLanguage)
This will remove/adjust values in the settings that are not compatible with this version.
sourcepub fn push_all(
&mut self,
settings: impl IntoIterator<Item = ContractOutputSelection>,
)
pub fn push_all( &mut self, settings: impl IntoIterator<Item = ContractOutputSelection>, )
Inserts a set of ContractOutputSelection
sourcepub fn with_extra_output(
self,
settings: impl IntoIterator<Item = ContractOutputSelection>,
) -> Settings
pub fn with_extra_output( self, settings: impl IntoIterator<Item = ContractOutputSelection>, ) -> Settings
Inserts a set of ContractOutputSelection
sourcepub fn push_output_selection(&mut self, value: impl ToString)
pub fn push_output_selection(&mut self, value: impl ToString)
Inserts the value for all files and contracts
use foundry_compilers_artifacts_solc::{output_selection::ContractOutputSelection, Settings};
let mut selection = Settings::default();
selection.push_output_selection(ContractOutputSelection::Metadata);
sourcepub fn push_contract_output_selection(
&mut self,
contracts: impl Into<String>,
value: impl ToString,
)
pub fn push_contract_output_selection( &mut self, contracts: impl Into<String>, value: impl ToString, )
Inserts the key
value
pair to the output_selection
for all files
If the key
already exists, then the value is added to the existing list
sourcepub fn set_output_selection(
&mut self,
values: impl IntoIterator<Item = impl ToString>,
)
pub fn set_output_selection( &mut self, values: impl IntoIterator<Item = impl ToString>, )
Sets the value for all files and contracts
sourcepub fn set_contract_output_selection(
&mut self,
key: impl Into<String>,
values: impl IntoIterator<Item = impl ToString>,
)
pub fn set_contract_output_selection( &mut self, key: impl Into<String>, values: impl IntoIterator<Item = impl ToString>, )
Sets the key
to the values
pair to the output_selection
for all files
This will replace the existing values for key
if they’re present
sourcepub fn set_via_ir(self, via_ir: bool) -> Settings
pub fn set_via_ir(self, via_ir: bool) -> Settings
Sets the viaIR
value.
sourcepub fn with_via_ir(self) -> Settings
pub fn with_via_ir(self) -> Settings
Enables viaIR
.
sourcepub fn with_via_ir_minimum_optimization(self) -> Settings
pub fn with_via_ir_minimum_optimization(self) -> Settings
Enable viaIR
and use the minimum optimization settings.
This is useful in the following scenarios:
- When compiling for test coverage, this can resolve the “stack too deep” error while still giving a relatively accurate source mapping
- When compiling for test, this can reduce the compilation time
pub fn strip_prefix(&mut self, base: &Path)
sourcepub fn with_base_path(self, base: &Path) -> Settings
pub fn with_base_path(self, base: &Path) -> Settings
Strips base
from all paths
Trait Implementations§
source§impl<'de> Deserialize<'de> for Settings
impl<'de> Deserialize<'de> for Settings
source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<Settings, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<Settings, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
source§impl PartialEq for Settings
impl PartialEq for Settings
source§impl Serialize for Settings
impl Serialize for Settings
source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl Eq for Settings
impl StructuralPartialEq for Settings
Auto Trait Implementations§
impl Freeze for Settings
impl RefUnwindSafe for Settings
impl Send for Settings
impl Sync for Settings
impl Unpin for Settings
impl UnwindSafe for Settings
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§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)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 moresource§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self
with the foreground set to
value
.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red()
and
green()
, which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg()
:
use yansi::{Paint, Color};
painted.fg(Color::White);
Set foreground color to white using white()
.
use yansi::Paint;
painted.white();
source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Returns self
with the
fg()
set to
Color::BrightBlack
.
§Example
println!("{}", value.bright_black());
source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Returns self
with the
fg()
set to
Color::BrightGreen
.
§Example
println!("{}", value.bright_green());
source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Returns self
with the
fg()
set to
Color::BrightYellow
.
§Example
println!("{}", value.bright_yellow());
source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Returns self
with the
fg()
set to
Color::BrightMagenta
.
§Example
println!("{}", value.bright_magenta());
source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Returns self
with the
fg()
set to
Color::BrightWhite
.
§Example
println!("{}", value.bright_white());
source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self
with the background set to
value
.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red()
and
on_green()
, which have the same functionality but
are pithier.
§Example
Set background color to red using fg()
:
use yansi::{Paint, Color};
painted.bg(Color::Red);
Set background color to red using on_red()
.
use yansi::Paint;
painted.on_red();
source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Returns self
with the
bg()
set to
Color::BrightBlack
.
§Example
println!("{}", value.on_bright_black());
source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Returns self
with the
bg()
set to
Color::BrightGreen
.
§Example
println!("{}", value.on_bright_green());
source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Returns self
with the
bg()
set to
Color::BrightYellow
.
§Example
println!("{}", value.on_bright_yellow());
source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Returns self
with the
bg()
set to
Color::BrightBlue
.
§Example
println!("{}", value.on_bright_blue());
source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Returns self
with the
bg()
set to
Color::BrightMagenta
.
§Example
println!("{}", value.on_bright_magenta());
source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Returns self
with the
bg()
set to
Color::BrightCyan
.
§Example
println!("{}", value.on_bright_cyan());
source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Returns self
with the
bg()
set to
Color::BrightWhite
.
§Example
println!("{}", value.on_bright_white());
source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute
value
.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold()
and
underline()
, which have the same functionality
but are pithier.
§Example
Make text bold using attr()
:
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);
Make text bold using using bold()
.
use yansi::Paint;
painted.bold();
source§fn underline(&self) -> Painted<&T>
fn underline(&self) -> Painted<&T>
Returns self
with the
attr()
set to
Attribute::Underline
.
§Example
println!("{}", value.underline());
source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Returns self
with the
attr()
set to
Attribute::RapidBlink
.
§Example
println!("{}", value.rapid_blink());
source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi
Quirk
value
.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask()
and
wrap()
, which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk()
:
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);
Enable wrapping using wrap()
.
use yansi::Paint;
painted.wrap();
source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting()
due to conflicts with Vec::clear()
.
The clear()
method will be removed in a future release.
fn clear(&self) -> Painted<&T>
resetting()
due to conflicts with Vec::clear()
.
The clear()
method will be removed in a future release.source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition
value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted
only when both stdout
and stderr
are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);