Struct ethers_solc::remappings::Remapping [−][src]
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:
“prefix” = the path that’s used in your smart contract, i.e. “@openzeppelin/contracts-ethereum-package” “target” = the absolute path of OpenZeppelin’s contracts downloaded on your computer
The format looks like this:
solc prefix=target ./MyContract.sol
solc –bin @openzeppelin/contracts-ethereum-package=/Your/Absolute/Path/To/@openzeppelin/ contracts-ethereum-package ./MyContract.sol
Fields
name: String
path: String
Implementations
Returns all formatted remappings
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
)
Trait Implementations
Deserialize this value from the given Serde deserializer. Read more
This method returns an ordering between self
and other
values if one exists. Read more
This method tests less than (for self
and other
) and is used by the <
operator. Read more
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
This method tests greater than (for self
and other
) and is used by the >
operator. Read more
Auto Trait Implementations
impl RefUnwindSafe for Remapping
impl UnwindSafe for Remapping
Blanket Implementations
Mutably borrows from an owned value. Read more
Compare self to key
and return true
if they are equal.
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more