Struct ethers_solc::resolver::Graph

source ·
pub struct Graph { /* private fields */ }
Expand description

Represents a fully-resolved solidity dependency graph. Each node in the graph is a file and edges represent dependencies between them. See also https://docs.soliditylang.org/en/latest/layout-of-source-files.html?highlight=import#importing-other-source-files

Implementations§

source§

impl Graph

source

pub fn print(&self)

Print the graph to StdOut

source

pub fn print_with_options(&self, opts: TreeOptions)

Print the graph to StdOut using the provided TreeOptions

source

pub fn imported_nodes(&self, from: usize) -> &[usize]

Returns a list of nodes the given node index points to for the given kind.

source

pub fn all_imported_nodes( &self, from: usize ) -> impl Iterator<Item = usize> + '_

Returns an iterator that yields all imports of a node and all their imports

source

pub fn files(&self) -> &HashMap<PathBuf, usize>

Returns all the resolved files and their index in the graph

source

pub fn node(&self, index: usize) -> &Node

Gets a node by index.

§Panics

if the index node id is not included in the graph

source

pub fn node_ids(&self, start: usize) -> impl Iterator<Item = usize> + '_

Returns an iterator that yields all nodes of the dependency tree that the given node id spans, starting with the node itself.

§Panics

if the start node id is not included in the graph

source

pub fn nodes(&self, start: usize) -> impl Iterator<Item = &Node> + '_

Same as Self::node_ids but returns the actual Node

source

pub fn into_sources(self) -> (Sources, GraphEdges)

Consumes the Graph, effectively splitting the nodes and the GraphEdges off and returning the nodes converted to Sources

source

pub fn input_nodes(&self) -> impl Iterator<Item = &Node>

Returns an iterator that yields only those nodes that represent input files. See Self::resolve_sources This won’t yield any resolved library nodes

source

pub fn imports(&self, path: impl AsRef<Path>) -> HashSet<&PathBuf>

Returns all files imported by the given file

source

pub fn resolve_sources( paths: &ProjectPathsConfig, sources: Sources ) -> Result<Graph>

Resolves a number of sources within the given config

source

pub fn resolve(paths: &ProjectPathsConfig) -> Result<Graph>

Resolves the dependencies of a project’s source contracts

source§

impl Graph

source

pub fn into_sources_by_version( self, offline: bool ) -> Result<(VersionedSources, GraphEdges)>

Available on crate feature svm-solc and non-WebAssembly only.

Consumes the nodes of the graph and returns all input files together with their appropriate version and the edges of the graph

First we determine the compatible version for each input file (from sources and test folder, see Self::resolve) and then we add all resolved library imports.

source

pub fn ensure_compatible_imports(&self, offline: bool) -> Result<()>

Available on crate feature svm-solc and non-WebAssembly only.

Ensures that all files are compatible with all of their imports.

Trait Implementations§

source§

impl Debug for Graph

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl RefUnwindSafe for Graph

§

impl Send for Graph

§

impl Sync for Graph

§

impl Unpin for Graph

§

impl UnwindSafe for Graph

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<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, 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> JsonSchemaMaybe for T