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

Source

Fields§

§context: Option<String>§name: String§path: String

Implementations§

source§

impl Remapping

source

pub fn into_relative(self, root: impl AsRef<Path>) -> RelativeRemapping

Convenience function for RelativeRemapping::new

source

pub fn strip_prefix(&mut self, base: impl AsRef<Path>) -> &mut Self

Removes the base path from the remapping

source§

impl Remapping

source

pub fn find_many_str(path: &str) -> Vec<String>

Returns all formatted remappings

source

pub fn find_many(dir: impl AsRef<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)

source

pub fn slash_path(&mut self)

Converts any \\ separators in the path to /

Trait Implementations§

source§

impl Clone for Remapping

source§

fn clone(&self) -> Remapping

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Remapping

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de> Deserialize<'de> for Remapping

source§

fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Display for Remapping

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl From<RelativeRemapping> for Remapping

source§

fn from(r: RelativeRemapping) -> Self

Converts to this type from the input type.
source§

impl From<Remapping> for RelativeRemapping

source§

fn from(r: Remapping) -> Self

Converts to this type from the input type.
source§

impl FromStr for Remapping

§

type Err = RemappingError

The associated error which can be returned from parsing.
source§

fn from_str(remapping: &str) -> Result<Self, Self::Err>

Parses a string s to return a value of this type. Read more
source§

impl Ord for Remapping

source§

fn cmp(&self, other: &Remapping) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for Remapping

source§

fn eq(&self, other: &Remapping) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd for Remapping

source§

fn partial_cmp(&self, other: &Remapping) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for Remapping

source§

fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Eq for Remapping

source§

impl StructuralPartialEq for Remapping

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<Q, K> Comparable<K> for Q
where Q: Ord + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn compare(&self, key: &K) -> Ordering

Compare self to key and return their ordering.
source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> Pointable for T

source§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T> ToString for T
where T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

source§

impl<T> JsonSchemaMaybe for T