Struct rustc_middle::mir::generic_graphviz::GraphvizWriter
source · [−]pub struct GraphvizWriter<'a, G: DirectedGraph + WithSuccessors + WithStartNode + WithNumNodes, NodeContentFn: Fn(<G as DirectedGraph>::Node) -> Vec<String>, EdgeLabelsFn: Fn(<G as DirectedGraph>::Node) -> Vec<String>> {
graph: &'a G,
is_subgraph: bool,
graphviz_name: String,
graph_label: Option<String>,
node_content_fn: NodeContentFn,
edge_labels_fn: EdgeLabelsFn,
}
Fields
graph: &'a G
is_subgraph: bool
graphviz_name: String
graph_label: Option<String>
node_content_fn: NodeContentFn
edge_labels_fn: EdgeLabelsFn
Implementations
sourceimpl<'a, G: DirectedGraph + WithSuccessors + WithStartNode + WithNumNodes, NodeContentFn: Fn(<G as DirectedGraph>::Node) -> Vec<String>, EdgeLabelsFn: Fn(<G as DirectedGraph>::Node) -> Vec<String>> GraphvizWriter<'a, G, NodeContentFn, EdgeLabelsFn>
impl<'a, G: DirectedGraph + WithSuccessors + WithStartNode + WithNumNodes, NodeContentFn: Fn(<G as DirectedGraph>::Node) -> Vec<String>, EdgeLabelsFn: Fn(<G as DirectedGraph>::Node) -> Vec<String>> GraphvizWriter<'a, G, NodeContentFn, EdgeLabelsFn>
pub fn new(
graph: &'a G,
graphviz_name: &str,
node_content_fn: NodeContentFn,
edge_labels_fn: EdgeLabelsFn
) -> Self
pub fn set_graph_label(&mut self, graph_label: &str)
sourcepub fn write_graphviz<'tcx, W>(&self, tcx: TyCtxt<'tcx>, w: &mut W) -> Result<()>where
W: Write,
pub fn write_graphviz<'tcx, W>(&self, tcx: TyCtxt<'tcx>, w: &mut W) -> Result<()>where
W: Write,
Write a graphviz DOT of the graph
sourcepub fn write_node<W>(
&self,
node: G::Node,
dark_mode: bool,
w: &mut W
) -> Result<()>where
W: Write,
pub fn write_node<W>(
&self,
node: G::Node,
dark_mode: bool,
w: &mut W
) -> Result<()>where
W: Write,
Write a graphviz DOT node for the given node.
sourcefn write_edges<W>(&self, source: G::Node, w: &mut W) -> Result<()>where
W: Write,
fn write_edges<W>(&self, source: G::Node, w: &mut W) -> Result<()>where
W: Write,
Write graphviz DOT edges with labels between the given node and all of its successors.
sourcefn write_graph_label<W>(&self, label: &str, w: &mut W) -> Result<()>where
W: Write,
fn write_graph_label<W>(&self, label: &str, w: &mut W) -> Result<()>where
W: Write,
Write the graphviz DOT label for the overall graph. This is essentially a block of text that will appear below the graph.
fn node(&self, node: G::Node) -> String
Auto Trait Implementations
impl<'a, G, NodeContentFn, EdgeLabelsFn> RefUnwindSafe for GraphvizWriter<'a, G, NodeContentFn, EdgeLabelsFn>where
EdgeLabelsFn: RefUnwindSafe,
G: RefUnwindSafe,
NodeContentFn: RefUnwindSafe,
impl<'a, G, NodeContentFn, EdgeLabelsFn> Send for GraphvizWriter<'a, G, NodeContentFn, EdgeLabelsFn>where
EdgeLabelsFn: Send,
G: Sync,
NodeContentFn: Send,
impl<'a, G, NodeContentFn, EdgeLabelsFn> Sync for GraphvizWriter<'a, G, NodeContentFn, EdgeLabelsFn>where
EdgeLabelsFn: Sync,
G: Sync,
NodeContentFn: Sync,
impl<'a, G, NodeContentFn, EdgeLabelsFn> Unpin for GraphvizWriter<'a, G, NodeContentFn, EdgeLabelsFn>where
EdgeLabelsFn: Unpin,
NodeContentFn: Unpin,
impl<'a, G, NodeContentFn, EdgeLabelsFn> UnwindSafe for GraphvizWriter<'a, G, NodeContentFn, EdgeLabelsFn>where
EdgeLabelsFn: UnwindSafe,
G: RefUnwindSafe,
NodeContentFn: UnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T, R> InternIteratorElement<T, R> for T
impl<T, R> InternIteratorElement<T, R> for T
type Output = R
fn intern_with<I, F>(iter: I, f: F) -> <T as InternIteratorElement<T, R>>::Outputwhere
I: Iterator<Item = T>,
F: FnOnce(&[T]) -> R,
sourceimpl<T> MaybeResult<T> for T
impl<T> MaybeResult<T> for T
sourceimpl<CTX, T> Value<CTX> for Twhere
CTX: DepContext,
impl<CTX, T> Value<CTX> for Twhere
CTX: DepContext,
default fn from_cycle_error(tcx: CTX) -> T
impl<'a, T> Captures<'a> for Twhere
T: ?Sized,
Layout
Note: Unable to compute type layout, possibly due to this type having generic parameters. Layout can only be computed for concrete, fully-instantiated types.