Skip to content
Snippets Groups Projects
Commit 4cee3091 authored by Jasper Clemens Gräflich's avatar Jasper Clemens Gräflich
Browse files

Add Rust folder for experiments etc

parent e6e9c30e
No related branches found
No related tags found
No related merge requests found
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
[[package]]
name = "rust"
version = "0.1.0"
[package]
name = "rust"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
# Rust Snippets
This is the Rust snippet heap. All the Rust code I actually have to have in `.rs` files is found here.
## Creating MIR control-flow graphs
We create a CFG by running `rustc` on a file with some options to emit a `.dot` file instead of a compiled binary:
```bash
rustc --emit mir -Z dump-mir=F -Z dump-mir-dataflow -Z unpretty=mir-cfg path/to/file.rs > mir.dot
```
We can then convert it to SVG if we want to:
```bash
dot -T svg -o mir.svg mir.dot
```
\ No newline at end of file
digraph Mir_0_3 {
graph [fontname="Courier, monospace"];
node [fontname="Courier, monospace"];
edge [fontname="Courier, monospace"];
label=<fn main() -&gt; ()<br align="left"/>let mut _1: i32;<br align="left"/>let _2: &amp;i32;<br align="left"/>let _3: ();<br align="left"/>let mut _4: std::fmt::Arguments;<br align="left"/>let mut _5: &amp;[&amp;str];<br align="left"/>let mut _6: &amp;[&amp;str; 2];<br align="left"/>let _7: &amp;[&amp;str; 2];<br align="left"/>let mut _8: &amp;[std::fmt::ArgumentV1];<br align="left"/>let mut _9: &amp;[std::fmt::ArgumentV1; 1];<br align="left"/>let _10: &amp;[std::fmt::ArgumentV1; 1];<br align="left"/>let _11: [std::fmt::ArgumentV1; 1];<br align="left"/>let mut _12: std::fmt::ArgumentV1;<br align="left"/>let mut _13: &amp;&amp;i32;<br align="left"/>let _14: &amp;&amp;i32;<br align="left"/>let mut _15: (i32, bool);<br align="left"/>let mut _16: &amp;[&amp;str; 2];<br align="left"/>debug x =&gt; _1;<br align="left"/>debug xref =&gt; _2;<br align="left"/>>;
bb0__0_3 [shape="none", label=<<table border="0" cellborder="1" cellspacing="0"><tr><td bgcolor="gray" align="center" colspan="1">0</td></tr><tr><td align="left" balign="left">_1 = const 0_i32<br/>_2 = &amp;_1<br/>_16 = const main::promoted[0]<br/>_7 = _16<br/>_6 = _7<br/>_5 = move _6 as &amp;[&amp;str] (Pointer(Unsize))<br/>_14 = &amp;_2<br/>_13 = _14<br/></td></tr><tr><td align="left">_12 = ArgumentV1::new_display::&lt;&amp;i32&gt;(move _13)</td></tr></table>>];
bb1__0_3 [shape="none", label=<<table border="0" cellborder="1" cellspacing="0"><tr><td bgcolor="gray" align="center" colspan="1">1</td></tr><tr><td align="left" balign="left">_11 = [move _12]<br/>_10 = &amp;_11<br/>_9 = _10<br/>_8 = move _9 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))<br/></td></tr><tr><td align="left">_4 = Arguments::new_v1(move _5, move _8)</td></tr></table>>];
bb2__0_3 [shape="none", label=<<table border="0" cellborder="1" cellspacing="0"><tr><td bgcolor="gray" align="center" colspan="1">2</td></tr><tr><td align="left">_3 = _print(move _4)</td></tr></table>>];
bb3__0_3 [shape="none", label=<<table border="0" cellborder="1" cellspacing="0"><tr><td bgcolor="gray" align="center" colspan="1">3</td></tr><tr><td align="left" balign="left">_15 = CheckedAdd(_1, const 1_i32)<br/></td></tr><tr><td align="left">assert(!move (_15.1: bool), &quot;attempt to compute `{} + {}`, which would overflow&quot;, _1, const 1_i32)</td></tr></table>>];
bb4__0_3 [shape="none", label=<<table border="0" cellborder="1" cellspacing="0"><tr><td bgcolor="gray" align="center" colspan="1">4</td></tr><tr><td align="left" balign="left">_1 = move (_15.0: i32)<br/></td></tr><tr><td align="left">return</td></tr></table>>];
bb0__0_3 -> bb1__0_3 [label="return"];
bb1__0_3 -> bb2__0_3 [label="return"];
bb2__0_3 -> bb3__0_3 [label="return"];
bb3__0_3 -> bb4__0_3 [label=""];
}
fn main() {
let mut x = 0;
let xref = &x;
println!("{xref}");
x += 1;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment