Struct foundry_compilers_artifacts::Remapping
source · pub struct Remapping {
pub context: Option<String>,
pub name: String,
pub path: String,
}
Expand description
The solidity compiler can only reference files that exist locally on your computer. So importing directly from GitHub (as an example) is not possible.
Let’s imagine you want to use OpenZeppelin’s amazing library of smart contracts,
@openzeppelin/contracts-ethereum-package
:
pragma solidity 0.5.11;
import "@openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol";
contract MyContract {
using SafeMath for uint256;
...
}
When using solc
, you have to specify the following:
- A
prefix
: the path that’s used in your smart contract, i.e.@openzeppelin/contracts-ethereum-package
- A
target
: the absolute path of the downloaded contracts on your computer
The format looks like this: solc prefix=target ./MyContract.sol
For example:
solc --bin \
@openzeppelin/contracts-ethereum-package=/Your/Absolute/Path/To/@openzeppelin/contracts-ethereum-package \
./MyContract.sol
You can also specify a context
which limits the scope of the remapping to a subset of your
project. This allows you to apply the remapping only to imports located in a specific library or
a specific file. Without a context a remapping is applied to every matching import in all files.
The format is: solc context:prefix=target ./MyContract.sol
Fields§
§context: Option<String>
§name: String
§path: String
Implementations§
source§impl Remapping
impl Remapping
sourcepub fn into_relative(self, root: &Path) -> RelativeRemapping
pub fn into_relative(self, root: &Path) -> RelativeRemapping
Convenience function for RelativeRemapping::new
sourcepub fn strip_prefix(&mut self, base: &Path) -> &mut Remapping
pub fn strip_prefix(&mut self, base: &Path) -> &mut Remapping
Removes the base
path from the remapping
source§impl Remapping
impl Remapping
sourcepub fn find_many_str(path: &Path) -> Vec<String>
pub fn find_many_str(path: &Path) -> Vec<String>
Attempts to autodetect all remappings given a certain root path.
See Self::find_many
for more information.
sourcepub fn find_many(dir: &Path) -> Vec<Remapping>
pub fn find_many(dir: &Path) -> Vec<Remapping>
Attempts to autodetect all remappings given a certain root path.
This will recursively scan all subdirectories of the root path, if a subdirectory contains a solidity file then this a candidate for a remapping. The name of the remapping will be the folder name.
However, there are additional rules/assumptions when it comes to determining if a candidate should in fact be a remapping:
All names and paths end with a trailing “/”
The name of the remapping will be the parent folder of a solidity file, unless the folder is
named src
, lib
or contracts
in which case the name of the remapping will be the parent
folder’s name of src
, lib
, contracts
: The remapping of repo1/src/contract.sol
is
name: "repo1/", path: "repo1/src/"
Nested remappings need to be separated by src
, lib
or contracts
, The remapping of
repo1/lib/ds-math/src/contract.sol
is name: "ds-math/", "repo1/lib/ds-math/src/"
Remapping detection is primarily designed for dapptool’s rules for lib folders, however, we
attempt to detect and optimize various folder structures commonly used in node_modules
dependencies. For those the same rules apply. In addition, we try to unify all
remappings discovered according to the rules mentioned above, so that layouts like,
which would be multiple rededications according to our rules (“governance”, “protocol-v2”),
are unified into @aave
by looking at their common ancestor, the root of this subdirectory
(@aave
)
sourcepub fn slash_path(&mut self)
pub fn slash_path(&mut self)
Converts any \\
separators in the path
to /
Trait Implementations§
source§impl<'de> Deserialize<'de> for Remapping
impl<'de> Deserialize<'de> for Remapping
source§fn deserialize<D>(
deserializer: D,
) -> Result<Remapping, <D as Deserializer<'de>>::Error>where
D: Deserializer<'de>,
fn deserialize<D>(
deserializer: D,
) -> Result<Remapping, <D as Deserializer<'de>>::Error>where
D: Deserializer<'de>,
source§impl From<RelativeRemapping> for Remapping
impl From<RelativeRemapping> for Remapping
source§fn from(r: RelativeRemapping) -> Remapping
fn from(r: RelativeRemapping) -> Remapping
source§impl From<Remapping> for RelativeRemapping
impl From<Remapping> for RelativeRemapping
source§fn from(r: Remapping) -> RelativeRemapping
fn from(r: Remapping) -> RelativeRemapping
source§impl Ord for Remapping
impl Ord for Remapping
source§impl PartialEq for Remapping
impl PartialEq for Remapping
source§impl PartialOrd for Remapping
impl PartialOrd for Remapping
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read moresource§impl Serialize for Remapping
impl Serialize for Remapping
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 Remapping
impl StructuralPartialEq for Remapping
Auto Trait Implementations§
impl Freeze for Remapping
impl RefUnwindSafe for Remapping
impl Send for Remapping
impl Sync for Remapping
impl Unpin for Remapping
impl UnwindSafe for Remapping
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);