Create a graphviz representation of the obligation forest. Given a directory this will
create files with name of the format <counter>_<description>.gv
. The counter is
global and is maintained internally.
Calling this will do nothing unless the environment variable
DUMP_OBLIGATION_FOREST_GRAPHVIZ
is defined.
A few post-processing that you might want to do make the forest easier to visualize:
sed 's,std::[a-z]*::,,g'
— Deletes the std::<package>::
prefix of paths.
sed 's,"Binder(TraitPredicate(<\(.*\)>)) (\([^)]*\))","\1 (\2)",'
— Transforms
Binder(TraitPredicate(<predicate>))
into just <predicate>
.
Return the total number of nodes in the forest that have not
yet been fully resolved.
Registers an obligation
This CAN be done in a snapshot
Convert all remaining obligations to the given error.
This cannot be done during a snapshot.
Returns the set of obligations that are in a pending state.
Perform a pass through the obligation list. This must
be called in a loop until outcome.stalled
is false.
This CANNOT be unrolled (presently, at least).
Must return a DOT compatible identifier naming the graph.
Maps n
to a unique identifier with respect to self
. The implementor is responsible for ensuring that the returned name is a valid DOT identifier. Read more
Maps n
to a label that will be used in the rendered output. The label need not be unique, and may be the empty string; the default is just the output from node_id
. Read more
Maps e
to a label that will be used in the rendered output. The label need not be unique, and may be the empty string; the default is in fact the empty string. Read more
Maps n
to one of the [graphviz shape
names][1]. If None
is returned, no shape
attribute is specified. Read more
Maps n
to a style that will be used in the rendered output.
Maps e
to a style that will be used in the rendered output.
Returns all the nodes in this graph.
Returns all of the edges in this graph.
The source node for edge
.
The target node for edge
.
🔬 This is a nightly-only experimental API. (try_from
)
The type returned in the event of a conversion error.
🔬 This is a nightly-only experimental API. (try_from
)
Immutably borrows from an owned value. Read more
🔬 This is a nightly-only experimental API. (get_type_id
)
this method will likely be replaced by an associated static
type Error = <U as TryFrom<T>>::Error
🔬 This is a nightly-only experimental API. (try_from
)
The type returned in the event of a conversion error.
🔬 This is a nightly-only experimental API. (try_from
)
Mutably borrows from an owned value. Read more
Create an error for a missing method specialization. Defaults to panicking with type, trait & method names. S
is the encoder/decoder state type, T
is the type being encoded/decoded, and the arguments are the names of the trait and method that should've been overridden. Read more