diff --git a/.gitignore b/.gitignore
index 7585238..bfa62eb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
book
+src/examples
\ No newline at end of file
diff --git a/NOTES.md b/NOTES.md
deleted file mode 100644
index 07c4e6c..0000000
--- a/NOTES.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# Hard-Coded Modifications
-
-1. [move_assignment](src/assets/modified_examples/move_assignment)
- - added "the resource previously owned is dropped" to message on line 239
\ No newline at end of file
diff --git a/README.md b/README.md
index dfd58b3..c5cfc02 100644
--- a/README.md
+++ b/README.md
@@ -1,25 +1,11 @@
# RustViz Tutorial
This repo contains an introductory Rust tutorial which contains visualizations
-generated with [RustViz](https://github.com/fplab/rustviz). It is intended to be
+generated with [RustViz](https://github.com/rustviz/rustviz2). It is intended to be
used in the Rust unit in EECS 490 at the University of Michigan.
## Usage
-### Copying Code Examples Using `copy_assets.sh`
-To easily copy over code examples from the rustviz repo, you can run
-`copy_assets.sh`. This will copy the source code and SVGs from the
-`svg_generator/examples` directory in the rustviz repo to the
-`src/assets/code_examples` directory in this repo. Some things to note:
-- The script should only be run from the `rustviz-tutorial` directory.
-- `rustviz-tutorial` and `rustviz` must have the same parent directory for the
-script to work.
-- The script will overwrite any existing files with the same name.
-- This script doesn't actually run the svg_generator. It simply copies existing
-files. You should run the svg generator examples first.
-
-### Building the Book
1. Install mdbook using `cargo install mdbook`
-2. Navigate to the `rustviz-tutorial` directory and run `mdbook build`
-3. Navigate to the `rustviz-tutorial/book` directory and run
-`python3 -m http.server`. You should be able to view the tutorial in your
-browser at http://localhost:8000/
\ No newline at end of file
+2. Install the RustViz preprocessor with `rustup run nightly-2024-05-20 cargo install mdbook-rustviz`
+3. Run `mdbook serve` to serve an instance of the book
+4. For information on how to add your own Rust examples to the book check out the mdbook-rustviz [documentation](https://github.com/rustviz/rustviz2/tree/main/mdbook-rustviz)
\ No newline at end of file
diff --git a/book.toml b/book.toml
index 096b2ec..f5a7c34 100644
--- a/book.toml
+++ b/book.toml
@@ -5,6 +5,4 @@ multilingual = false
src = "src"
title = "Tutorial"
-[output.html]
-additional-css = ["visualization.css"]
-additional-js = ["helpers.js"]
\ No newline at end of file
+[preprocessor.rustviz]
\ No newline at end of file
diff --git a/build_tutorial.sh b/build_tutorial.sh
deleted file mode 100755
index 28450b9..0000000
--- a/build_tutorial.sh
+++ /dev/null
@@ -1,97 +0,0 @@
-#!/bin/bash
-red=$'\e[1;31m'
-end=$'\e[0m'
-
-# Write the first line of SUMMARY.md. This clears anything that was there previously
-# printf "# Summary\n\n" > src/SUMMARY.md
-
-printf "Generating visualizations for the following examples: \n"
-
-# Uncomment the examples are being tested
-declare -a targetExamples=(
- # "copy"
- # "func_take_ownership"
- # "func_take_return_ownership"
- # "function"
- # "hatra1"
- # "hatra1_test"
- # "hatra2"
- # "immutable_borrow"
- # "immutable_borrow_method_call"
- # "immutable_variable"
- # "move_assignment"
- # "move_different_scope"
- # "move_func_return"
- # "multiple_immutable_borrow"
- # "mutable_borrow"
- # "mutable_borrow_method_call"
- # "mutable_variables"
- # "nll_lexical_scope_different"
- # "printing"
- # "string_from_move_print"
- # "string_from_print"
- # "struct_lifetime"
- # "struct_rect"
- # "struct_rect2"
- # "struct_string"
- # "extra_credit"
- "thread_vec"
- "thread_vec2"
-)
-
-LOCALEX="src/assets/code_examples"
-EX="../rustviz/src/examples"
-# Loop through the specified examples
-for target in ${targetExamples[@]}; do
- printf "building %s...\n" $target
-
- if ! [[ -d "$EX/$target" ]]
- then
- mkdir $EX/$target
- fi
- cp "$LOCALEX/$target/source.rs" "$EX/$target/source.rs"
-
- # Check if required files are there
- if [[ -f "$EX/$target/source.rs" ]]
- then
- # Check if file headers exist
- if ! [[ -f "$EX/$target/main.rs" ]]
- then
- printf "\ngenerating header for %s..." $target
- cd "../rustviz/src/RustvizParse"
- cargo run "../examples/$target/source.rs" >/dev/null 2>&1
- cd "../../../rustviz-tutorial"
- cp "$EX/$target/main.rs" "$LOCALEX/$target/main.rs"
- printf "\nPlease define events and rerun current script\n"
- continue
- fi
- cp "$LOCALEX/$target/main.rs" "$EX/$target/main.rs"
- cd "../rustviz/src/" # switch to appropriate folder
- # Run svg generation for example
- cargo run $target >/dev/null 2>&1
-
- # If the svg generation exited with an error or the required SVGs weren't created, report failure and continue
- if [[ $? -ne 0 || !(-f "examples/$target/vis_code.svg") || !(-f "examples/$target/vis_timeline.svg") ]]; then
- printf "${red}FAILED${end} on SVG generation.\n"
- cd ../../rustviz-tutorial
- continue
- fi
- cd ../../rustviz-tutorial
-
- # Copy files to mdbook directory
- mkdir -p "./src/assets/code_examples/$target"
- cp "$EX/$target/vis_code.svg" "./src/assets/code_examples/$target/vis_code.svg"
- cp "$EX/$target/vis_timeline.svg" "./src/assets/code_examples/$target/vis_timeline.svg"
-
- else
- # Not Necessary (file double check)
- printf "${red}FAILED${end}. The required files are not in the examples dir.\n"
- fi
-done
-
-# Build mdbook
-mdbook build
-
-# Run HTTP server on docs directory
-cd book
-python3 -m http.server 8000
\ No newline at end of file
diff --git a/copy_assets.sh b/copy_assets.sh
deleted file mode 100755
index 67b2479..0000000
--- a/copy_assets.sh
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/bin/bash
-
-# This is a convenience script to copy the code examples and corresponding SVG
-# visualizations from the rustviz repository. See README.md for more details.
-RV='../rustviz'
-# printf "copying helper.js and book.js..."
-cp "$RV/rustviz_mdbook/mdbook_plugin/helpers.js" "./helpers.js"
-cp "$RV/rustviz_mdbook/mdbook_plugin/book.js" "./theme/book.js"
-# echo "done"
-
-printf "copying files into code_examples..."
-EX=$RV/src/examples
-for DIR in $EX/*/; do
- BASENAME=`basename $DIR`
- echo $BASENAME
- if [[ -f "$DIR/source.rs" && -f "$DIR/vis_code.svg" && -f "$DIR/vis_timeline.svg" ]]
- then
- mkdir -p "./src/assets/code_examples/$BASENAME" && \
- cp "$DIR/source.rs" "./src/assets/code_examples/$BASENAME/source.rs" && \
- cp "$DIR/vis_code.svg" "./src/assets/code_examples/$BASENAME/vis_code.svg" && \
- cp "$DIR/vis_timeline.svg" "./src/assets/code_examples/$BASENAME/vis_timeline.svg"
- else
- echo "$BASENAME does not have the required files, skipping."
- fi
-done
-printf "${green}done${END}\n"
-
-# Copy new files to modified_examples
-printf "Copying files into modified_examples..."
-for DIR in ./src/assets/modified_examples/*; do
- BASENAME=`basename $DIR`
- echo $BASENAME
- if [[ -f "$EX/$BASENAME/source.rs" && -f "$EX/$BASENAME/vis_code.svg" && -f "$EX/$BASENAME/vis_timeline.svg" ]]
- then
- cp "$EX/$BASENAME/source.rs" "$DIR/source.rs" && \
- cp "$EX/$BASENAME/vis_code.svg" "$DIR/vis_code.svg" && \
- cp "$EX/$BASENAME/vis_timeline.svg" "$DIR/vis_timeline.svg"
- else
- echo "$BASENAME does not have the required files, skipping."
- fi
-done
-printf "${green}done${END}\n"
-
-mdbook build
\ No newline at end of file
diff --git a/helpers.js b/helpers.js
deleted file mode 100644
index 6e756fe..0000000
--- a/helpers.js
+++ /dev/null
@@ -1,535 +0,0 @@
-const SVG = {
- text: {
- label: "label",
- functionLogo: "label",
- },
- path: {
- hollow: "timeline_mut",
- staticref: "static_ref_line",
- mutref: "mut_ref_line",
- },
- polyline: "arrow",
- circle: "event",
- line: "timeline_mut",
- use: "function_event",
- rect: "structBox",
- };
-
- /* --------------------- SIMPLE DRIVER --------------------- */
- function helpers(classname) {
- // console.log("class name is :", classname)
- // create tooltip element before #page-wrapper
- let page = document.querySelector("#page-wrapper");
- let tooltip = document.getElementById("svg_tooltip");
- if (!tooltip) {
- tooltip = document.createElement("p");
- tooltip.id = "svg_tooltip";
- tooltip.style.cssText =
- "position: absolute; padding: 0.5em; font-size: 0.75em; border-radius: 8px;" +
- "font-family: 'Trebuchet MS', Helvetica, sans-serif;" +
- "background: rgb(70, 70, 70, 0.6); color: white; z-index: 100; display: none;";
- page.parentNode.insertBefore(tooltip, page);
- }
-
- displayFn(classname);
- displayTooltip(tooltip, classname);
- }
-
- /* --------------------- FUNCTION HIGHLIGHT --------------------- */
-
- // change function name color on hover
- function displayFn(classname) {
- // get svg elements
- let vis_num = document.getElementsByClassName(classname);
- let code_obj = vis_num[0];
- let tl_obj = vis_num[1];
- let c_svg = code_obj.contentDocument.firstChild;
- let tl_svg = tl_obj.contentDocument.firstChild;
- // get elements that will trigger function
- let triggers = tl_svg.getElementsByClassName("fn-trigger");
- var functions = c_svg.getElementsByClassName("fn");
-
- for (let i = 0; i < triggers.length; i++) {
- triggers[i].addEventListener("mouseover", showFn);
- triggers[i].addEventListener("mouseout", hideFn);
- }
-
- function showFn(evt) {
- // console.log("showFn")
- // get target attributes
- let evt_hash = evt.target.dataset.hash;
-
- for (let i = 0; i < functions.length; i++) {
- // if hashes match, temporarily change color
- if (functions[i].getAttribute("hash") == evt_hash) {
- functions[i].dataset.hash = evt_hash;
- }
- }
- }
-
- function hideFn() {
- // console.log("hideFn");
- // // send hover msg to API
- // var xhr = new XMLHttpRequest();
- // xhr.open("POST", "/action/hover", true); // could add authentification info
- // xhr.setRequestHeader("Content-Type", "application/json");
- // xhr.send(
- // JSON.stringify({
- // action_type: "hideFn",
- // })
- // );
- // reset to hash 0, styling to black on mouseout
- for (let i = 0; i < functions.length; i++) {
- functions[i].dataset.hash = 0;
- }
- }
- }
-
- /* --------------------- SVG CODE-RELATED FUNCTIONS --------------------- */
-
- // resize code block to fit comments
- function sizeToFit(object) {
- // Case for Chrome loading
- if (navigator.userAgent.indexOf("Chrome") !== -1) {
- object.addEventListener(
- "load",
- function () {
- let svg_doc = object.contentDocument;
- let code_width = svg_doc.getElementById("code").getBBox().width;
- let new_width = Math.max(code_width + 30, 400);
- svg_doc.firstChild.setAttribute("width", new_width + "px");
- },
- { once: true }
- );
- } else {
- if (object.contentDocument.readyState === "complete") {
- let svg_doc = object.contentDocument;
- let code_width = svg_doc.getElementById("code").getBBox().width;
- let new_width = Math.max(code_width + 30, 400);
- svg_doc.firstChild.setAttribute("width", new_width + "px");
- }
- }
- }
-
- /* --------------------- TOOLTIP-RELATED FUNCTIONS --------------------- */
-
- // change tooltip text on hover
- function displayTooltip(tooltip, classname) {
- // get svg elements
- let tl_obj = document.getElementsByClassName(classname)[1];
- let tl_svg = tl_obj.contentDocument.firstChild;
- // get elements that will trigger function
- let triggers = tl_svg.getElementsByClassName("tooltip-trigger");
-
- let start_line = 0;
- let end_line = 0;
-
- // track time
- var time_start = null;
-
- for (let i = 0; i < triggers.length; i++) {
- // prevent adding duplicate listeners
- if (triggers[i].classList.contains("listener")) break;
- else triggers[i].classList.add("listener");
-
- triggers[i].addEventListener("mousemove", showTooltip);
- triggers[i].addEventListener("mouseleave", hideTooltip);
- triggers[i].addEventListener("mouseenter", insertUnderline);
- }
-
- function showTooltip(e) {
- // console.log("showTooltip")
- // only set time once, prevent from changing every time mouse moves
- if (!time_start) time_start = Date.now();
-
- let mouse = mousePos(e, tl_obj);
- tooltip.style.transform = "translate(" + mouse.x + "px, " + mouse.y + "px)";
- tooltip.style.display = "block";
-
- let text = e.currentTarget.getAttributeNS(null, "data-tooltip-text");
- tooltip.innerHTML = text;
-
- // if out of bounds, break text into two lines
- if (tooltip.getBoundingClientRect().right >= document.body.clientWidth)
- breakText(text, tooltip);
- }
-
- // function parseText(text) {
- // let split_text = text.split(" ");
- // let words = [];
-
- // for (const elt of split_text) {
- // if (elt.startsWith("<")) {
- // parse1 = elt.substr(elt.indexOf(">") + 1);
- // parse2 = parse1.substr(0, parse1.indexOf("<"));
- // words.push(parse2);
- // }
- // else {
- // words.push(elt);
- // }
- // }
-
- // result = "";
- // for (let elt of words) {
- // result += elt;
- // result += " ";
- // }
-
- // return result;
- // }
-
- function parseText(text) {
- result = text;
- while (result.indexOf("<") !== -1) {
- left = result.substr(0, result.indexOf("<"));
- right = result.substr(result.indexOf(">") + 1);
- result = left + " " + right;
- }
-
- return result;
- }
-
- function hideTooltip(e) {
- // console.log("hideTooltip");
- // console.log(e);
- // console.log(e.data-tooltip-text);
- // console.log(e.currentTarget.ownerSVGElement.id);
-
- let tgt = e.currentTarget;
- // console.log(tgt.data-tooltip-text);
-
- let text = e.currentTarget.getAttributeNS(null, "data-tooltip-text");
- text = parseText(text);
-
- let e_label =
- tgt.tagName === "text"
- ? SVG["text"][tgt.classList[0]]
- : tgt.tagName === "path"
- ? SVG["path"][tgt.classList[0]]
- : SVG[tgt.tagName];
-
- // console.log(e_label);
-
- let now = Date.now();
-
- let hover_time = now - time_start; // time in ms
-
- var xhr = new XMLHttpRequest();
- xhr.open("POST", "/action/hover", true); // could add authentification info
- xhr.setRequestHeader("Content-Type", "application/json");
- xhr.send(
- JSON.stringify({
- svg_name: e.currentTarget.ownerSVGElement.id,
- hover_item: e_label,
- hover_time: hover_time,
- start: time_start,
- end: now,
- hover_message: text,
- start_line: parseInt(start_line),
- end_line: parseInt(end_line),
- })
- );
- // console.log(xhr);
-
- tooltip.style.display = "none";
- tooltip.innerHTML = "";
-
- start_line = 0;
- end_line = 0;
-
- // only track hovering after mouse leaves element
- gtag("event", "tooltip_hover", {
- event_label: e_label,
- });
-
- gtag("event", e_label, {
- hover_time: Date.now() - time_start, // time in ms
- });
- time_start = null; // reset
-
- removeUnderline(e, classname);
- }
-
- /* ---- SHOW RELEVANT LINES ---- */
- function insertUnderline(e) {
- // console.log("insertUnderline");
- let doc = document.getElementsByClassName(classname + " code_panel")[0]
- .contentDocument; //code_panel
- let begin = 0,
- end = 0;
- if (e.currentTarget.tagName === "path") {
- let arr = e.currentTarget.getAttribute("d").split(" ");
- if (e.currentTarget.parentNode.id === "ref_line") {
- begin = parseInt(arr[2]);
- end = parseInt(begin) + 2 * parseInt(arr[5]) + parseInt(arr[7]) + 5; // + 5 to include last line
- } else {
- begin = parseInt(arr[7]);
- end = parseInt(arr[3]);
- }
- } else if (e.currentTarget.tagName === "line") {
- begin = e.currentTarget.getAttribute("y1");
- end = e.currentTarget.getAttribute("y2");
- } else {
- let pos;
- if (e.currentTarget.tagName === "circle") {
- begin = end = parseInt(e.currentTarget.getAttribute("cy")) + 5;
- } else if (e.currentTarget.tagName === "use") {
- begin = end = parseInt(e.currentTarget.getAttribute("y")) + 5;
- } else if (e.currentTarget.tagName === "polyline") {
- let arr = e.currentTarget.getAttribute("points").split(" ");
- begin = end = parseInt(arr[1]) + 5;
- } else {
- // e.currentTarget.tagName === 'text'
- begin = end = parseInt(e.currentTarget.getAttribute("y"));
- }
- }
-
- // add underlining to every relevant line
- let lines = doc.getElementById("code").children;
- let len = lines.length; // prevent len from changing
-
- // start_line and end_line are computed from variables begin and end.
-
- // begin and end are y-cordinates of the html elements on the website.
- // They might have a remainder of 25 or 0 when divided by 30
- // depending on the graphs generated by the code.
- // Hence, we handle these situations differently
- if (parseInt(begin) % 30 !== 0) {
- start_line = (parseInt(begin) + 5 - 60) / 30;
- }
- else {
- start_line = (parseInt(begin) - 60) / 30;
- }
-
- if (parseInt(end) % 30 !== 0) {
- end_line = (parseInt(end) + 5 - 60) / 30;
- }
- else {
- end_line = (parseInt(end) - 60) / 30;
- }
-
-
- for (let i = 0; i < len; ++i) {
- let ly = parseInt(lines[i].getAttribute("y"));
- if (ly >= begin && ly <= end) {
-
- // only underline relevant code
- let emph = doc.createElementNS("http://www.w3.org/2000/svg", "text");
- emph.setAttribute("class", "code emph");
- emph.setAttribute("x", "25");
- emph.setAttribute("y", ly + 3); // +3 to hang just under text
- emph.innerHTML = new Array(
- Math.floor(lines[i].getBBox().width / 8) // size of '_' = 8
- ).join("_"); // string with all underscores
- doc.getElementById("code").appendChild(emph);
- }
- }
- }
- }
-
- // track mouse movement
- function mousePos(evt, obj) {
- let x_pos = evt.clientX + obj.getBoundingClientRect().x + 15; // offset from svg start + svg offset
- let y_pos = evt.clientY + obj.getBoundingClientRect().y + window.scrollY + 45; // baseline hanging
-
- return {
- //object
- x: Math.round(x_pos),
- y: Math.round(y_pos),
- };
- }
-
- function removeUnderline(e, classname) {
- let doc = document.getElementsByClassName(classname + " code_panel")[0]
- .contentDocument; //code_panel
- let arr = doc.getElementsByClassName("emph");
- for (let i = arr.length - 1; i >= 0; --i) {
- arr[i].remove();
- }
- }
-
- // adjust text box
- function breakText(text, tooltip) {
- // combine span into one element
- let split_text = text.split(" ");
- let words = [];
- let last = 0,
- span = false;
- for (const elt of split_text) {
- if (elt.startsWith("<")) {
- span = true;
- words.push(elt);
- last = words.length - 1;
- } else if (elt.startsWith("!important")) {
- span = false;
- words[last] += elt;
- } else {
- if (span) {
- words[last] = words[last] + " " + elt;
- } else {
- words.push(elt);
- }
- }
- }
-
- // adjust size and split text based on page boundary
- tooltip.innerHTML = "";
- // console.log('enter?');
- let left = tooltip.getBoundingClientRect().left;
- for (const word of words) {
- // console.log('yes?');
- // console.log(word);
- tooltip.innerHTML += word + " ";
- if (left + tooltip.clientWidth > document.body.clientWidth - 20) {
- // reset tooltip text and break into new lines
- let idx = tooltip.innerHTML.lastIndexOf(
- " ",
- tooltip.innerHTML.length - 2
- );
- let temp = tooltip.innerHTML.substr(0, idx);
- let other = tooltip.innerHTML.substr(idx + 1);
-
- tooltip.innerHTML = "";
- tooltip.innerHTML += temp;
- tooltip.innerHTML += "
" + other;
- }
- }
- }
-
- /* --------------- TOGGLE ALL SVGS --------------- */
- function toggleAll(turn_on) {
- let evt = new MouseEvent("click", {
- bubbles: true,
- cancelable: true,
- view: window,
- });
-
- let arr = document.getElementsByClassName("toggle-button");
- for (const obj of arr) {
- if (turn_on && obj.classList.contains("fa-toggle-off")) {
- obj.dispatchEvent(evt);
- } else if (!turn_on && obj.classList.contains("fa-toggle-on")) {
- obj.dispatchEvent(evt);
- }
- }
- }
-
- /* --------------- TOGGLE ALL STRUCTS --------------- */
- function toggleStruct(turn_on) {
- var evt = new MouseEvent("click", {
- bubbles: true,
- cancelable: true,
- view: window,
- });
-
- var arr = document.getElementsByClassName("non-struct");
- for (const obj of arr) {
- if (turn_on && obj.classList.contains("fa-toggle-off")) {
- obj.dispatchEvent(evt);
- } else if (!turn_on && obj.classList.contains("fa-toggle-on")) {
- obj.dispatchEvent(evt);
- }
- }
- }
-
- /* --------------- DETECT TAB CLOSE --------------- */
- // window.addEventListener("beforeunload", (event) => {
- // chapter_list = document.getElementsByClassName("expanded");
- // start = new Date();
- // for (chapter of chapter_list) {
- // // console.log(chapter.textContent);
- // chapter.firstChild.addEventListener("click", function(e) {
- // e.preventDefault();
- // OnOneClick(window.location.pathname, start);
- // window.location = this.href;
- // // if(e.target && e.target.nodeName == "A") {
- // // OnOneClick(window.location.pathname, start);
- // // }
- // }, false);
- // }
-
- // var xhr = new XMLHttpRequest();
- // xhr.open("POST", "/action/close", true); // could add authentification info
- // xhr.setRequestHeader("Content-Type", "application/json");
- // xhr.send(
- // JSON.stringify({
- // action_type: "closed",
- // })
- // );
- // delete event["returnValue"];
- // });
-
- /* --------------- DETECT PAGE LOAD --------------- */
- window.addEventListener("load", function () {
- chapter_list = document.getElementsByClassName("expanded");
- start = new Date();
- // the following handler will send a POST request when a tab is closed or switched
- window.addEventListener("beforeunload", (event) => {
- OnOneClick(window.location.pathname, start);
- })
- });
-
- function callback(e) {
- var e = window.e || e;
-
- alert('The link is: ' + e.target.href);
- }
-
- function resume(s) {
- return true;
- }
-
- var OnOneClick = function (chapter, start) {
- // Your click handler
- time_onpage = new Date() - start;
- end_time = new Date();
- var xhr = new XMLHttpRequest();
- xhr.open("POST", "/action/switch", true); // could add authentification info
- xhr.setRequestHeader("Content-Type", "application/json");
- xhr.send(
- JSON.stringify({
- directory: chapter,
- time_elpse: time_onpage,
- start_time: start.getTime(),
- end_time: end_time.getTime(),
- })
- );
- console.log(xhr)
- };
-
- /*window.onload = function () {
- var correct_doc = (document.getElementsByClassName('active')[0].attributes.href.value === 'ch04-01-what-is-ownership.html'
- || document.getElementsByClassName('active')[0].attributes.href.value === 'ch04-02-references-and-borrowing.html');
-
- if (correct_doc) {
- let top_btns = document.getElementsByClassName('left-buttons');
-
- var eye = document.getElementById('viz-toggle');
- var struct_eye = document.getElementById('viz-struct-toggle')
-
- if (!eye) {
- eye = document.createElement('button');
- eye.id = 'viz-toggle';
- eye.className = 'icon-button fa fa-eye';
- eye.title = 'Toggle all visualizations';
- top_btns[0].insertBefore(eye, top_btns[0].lastElementChild);
- }
-
- eye.addEventListener('click', function (e) {
- if (e.currentTarget.classList.contains('fa-eye')) {
- // on button click, show all visualizations
- e.currentTarget.classList.remove('fa-eye');
- e.currentTarget.classList.add('fa-eye-slash');
-
- toggleAll(true);
- } else if (e.currentTarget.classList.contains('fa-eye-slash')) {
- // on button click, hide all visualizations
- e.currentTarget.classList.remove('fa-eye-slash');
- e.currentTarget.classList.add('fa-eye');
-
- toggleAll(false);
- }
- });
- }
- };*/
-
diff --git a/main_screenshot.png b/main_screenshot.png
deleted file mode 100644
index dc09b86..0000000
Binary files a/main_screenshot.png and /dev/null differ
diff --git a/src/additional_resources.md b/src/additional_resources.md
index cdbd361..e853844 100644
--- a/src/additional_resources.md
+++ b/src/additional_resources.md
@@ -1,10 +1 @@
# Additional Resources
-
-This tutorial introduced you to the basics of Rust and its ownership and
-borrowing system. If you are interested in diving deeper into Rust, here are
-some helpful resources:
-
-- [The Rust Programming Language (a.k.a. "the book")](https://doc.rust-lang.org/book/): An overview of Rust from first principles
-- [Rustlings](https://github.com/rust-lang/rustlings/): Small exercises in Rust
-- [Rust By Example](https://doc.rust-lang.org/stable/rust-by-example/): Introduces Rust concepts by through examples, as the name suggests
-- [Learn Rust](https://www.rust-lang.org/learn): Contains links to many different Rust learning resources including the ones above
\ No newline at end of file
diff --git a/src/assets/code_examples/copy/source.rs b/src/assets/code_examples/copy/source.rs
deleted file mode 100644
index 49c51b2..0000000
--- a/src/assets/code_examples/copy/source.rs
+++ /dev/null
@@ -1,4 +0,0 @@
-fn main() {
- let x = 5;
- let y = x;
-}
\ No newline at end of file
diff --git a/src/assets/code_examples/copy/vis_code.svg b/src/assets/code_examples/copy/vis_code.svg
deleted file mode 100644
index 8bc3f06..0000000
--- a/src/assets/code_examples/copy/vis_code.svg
+++ /dev/null
@@ -1,178 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/copy/vis_timeline.svg b/src/assets/code_examples/copy/vis_timeline.svg
deleted file mode 100644
index f2b61a9..0000000
--- a/src/assets/code_examples/copy/vis_timeline.svg
+++ /dev/null
@@ -1,261 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/extra_credit/source.rs b/src/assets/code_examples/extra_credit/source.rs
deleted file mode 100644
index a7338b1..0000000
--- a/src/assets/code_examples/extra_credit/source.rs
+++ /dev/null
@@ -1,18 +0,0 @@
-fn f(s1: &String) {
- s1.push_str(" 490!");
-}
-
-fn main() {
- let mut num = 490;
- let mut x = String::from("EECS");
- {
- let y = &mut x;
- f(y);
- let mut s2 = x;
- s2.push_str(" Woo!");
- println!("{}", s2);
-
- let n1 = num;
- println!("{}", n1);
- }
-}
\ No newline at end of file
diff --git a/src/assets/code_examples/extra_credit/vis_code.svg b/src/assets/code_examples/extra_credit/vis_code.svg
deleted file mode 100644
index 75699cb..0000000
--- a/src/assets/code_examples/extra_credit/vis_code.svg
+++ /dev/null
@@ -1,192 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/extra_credit/vis_timeline.svg b/src/assets/code_examples/extra_credit/vis_timeline.svg
deleted file mode 100644
index 902e933..0000000
--- a/src/assets/code_examples/extra_credit/vis_timeline.svg
+++ /dev/null
@@ -1,236 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/func_take_ownership/source.rs b/src/assets/code_examples/func_take_ownership/source.rs
deleted file mode 100644
index cdea2a0..0000000
--- a/src/assets/code_examples/func_take_ownership/source.rs
+++ /dev/null
@@ -1,9 +0,0 @@
-fn main() {
- let s = String::from("hello");
- takes_ownership(s);
- // println!("{}", s) // won't compile if added
-}
-
-fn takes_ownership(some_string: String) {
- println!("{}", some_string);
-}
\ No newline at end of file
diff --git a/src/assets/code_examples/func_take_ownership/vis_code.svg b/src/assets/code_examples/func_take_ownership/vis_code.svg
deleted file mode 100644
index f10aa46..0000000
--- a/src/assets/code_examples/func_take_ownership/vis_code.svg
+++ /dev/null
@@ -1,183 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/func_take_ownership/vis_timeline.svg b/src/assets/code_examples/func_take_ownership/vis_timeline.svg
deleted file mode 100644
index 23490a1..0000000
--- a/src/assets/code_examples/func_take_ownership/vis_timeline.svg
+++ /dev/null
@@ -1,276 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/func_take_return_ownership/source.rs b/src/assets/code_examples/func_take_return_ownership/source.rs
deleted file mode 100644
index 46846cc..0000000
--- a/src/assets/code_examples/func_take_return_ownership/source.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-fn take_and_return_ownership(some_string : String) -> String {
- println!("{}", some_string);
- some_string
-}
-
-fn main() {
- let mut s = String::from("hello");
- s = take_and_return_ownership(s);
- println!("{}", s); // OK
-}
\ No newline at end of file
diff --git a/src/assets/code_examples/func_take_return_ownership/vis_code.svg b/src/assets/code_examples/func_take_return_ownership/vis_code.svg
deleted file mode 100644
index 8da896f..0000000
--- a/src/assets/code_examples/func_take_return_ownership/vis_code.svg
+++ /dev/null
@@ -1,184 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/func_take_return_ownership/vis_timeline.svg b/src/assets/code_examples/func_take_return_ownership/vis_timeline.svg
deleted file mode 100644
index ce6acb3..0000000
--- a/src/assets/code_examples/func_take_return_ownership/vis_timeline.svg
+++ /dev/null
@@ -1,300 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/function/source.rs b/src/assets/code_examples/function/source.rs
deleted file mode 100644
index e0abbc1..0000000
--- a/src/assets/code_examples/function/source.rs
+++ /dev/null
@@ -1,7 +0,0 @@
-fn main() {
- let six = plus_one(5);
-}
-
-fn plus_one(x: i32) -> i32 {
- x + 1
-}
\ No newline at end of file
diff --git a/src/assets/code_examples/function/vis_code.svg b/src/assets/code_examples/function/vis_code.svg
deleted file mode 100644
index dd11a7e..0000000
--- a/src/assets/code_examples/function/vis_code.svg
+++ /dev/null
@@ -1,181 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/function/vis_timeline.svg b/src/assets/code_examples/function/vis_timeline.svg
deleted file mode 100644
index 4c9e2fb..0000000
--- a/src/assets/code_examples/function/vis_timeline.svg
+++ /dev/null
@@ -1,262 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/hatra1/source.rs b/src/assets/code_examples/hatra1/source.rs
deleted file mode 100644
index 1b546bc..0000000
--- a/src/assets/code_examples/hatra1/source.rs
+++ /dev/null
@@ -1,11 +0,0 @@
-fn main() {
- let s = String::from("hello");
- takes_ownership(s);
- let mut x = 5;
- let y = x;
- x = 6;
-}
-
-fn takes_ownership(some_string: String) {
- println!("{}", some_string);
-}
\ No newline at end of file
diff --git a/src/assets/code_examples/hatra1/vis_code.svg b/src/assets/code_examples/hatra1/vis_code.svg
deleted file mode 100644
index 265aacf..0000000
--- a/src/assets/code_examples/hatra1/vis_code.svg
+++ /dev/null
@@ -1,185 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/hatra1/vis_timeline.svg b/src/assets/code_examples/hatra1/vis_timeline.svg
deleted file mode 100644
index 6d5c47b..0000000
--- a/src/assets/code_examples/hatra1/vis_timeline.svg
+++ /dev/null
@@ -1,307 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/hatra1_test/source.rs b/src/assets/code_examples/hatra1_test/source.rs
deleted file mode 100644
index 1b546bc..0000000
--- a/src/assets/code_examples/hatra1_test/source.rs
+++ /dev/null
@@ -1,11 +0,0 @@
-fn main() {
- let s = String::from("hello");
- takes_ownership(s);
- let mut x = 5;
- let y = x;
- x = 6;
-}
-
-fn takes_ownership(some_string: String) {
- println!("{}", some_string);
-}
\ No newline at end of file
diff --git a/src/assets/code_examples/hatra1_test/vis_code.svg b/src/assets/code_examples/hatra1_test/vis_code.svg
deleted file mode 100644
index 55650c4..0000000
--- a/src/assets/code_examples/hatra1_test/vis_code.svg
+++ /dev/null
@@ -1,185 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/hatra1_test/vis_timeline.svg b/src/assets/code_examples/hatra1_test/vis_timeline.svg
deleted file mode 100644
index 599521a..0000000
--- a/src/assets/code_examples/hatra1_test/vis_timeline.svg
+++ /dev/null
@@ -1,292 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/hatra2/source.rs b/src/assets/code_examples/hatra2/source.rs
deleted file mode 100644
index 61992d0..0000000
--- a/src/assets/code_examples/hatra2/source.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-fn main(){
- let mut s = String::from("hello");
-
- let r1 = &s;
- let r2 = &s;
- assert!(compare_strings(r1, r2));
-
- let r3 = &mut s;
- clear_string(r3);
-}
\ No newline at end of file
diff --git a/src/assets/code_examples/hatra2/vis_code.svg b/src/assets/code_examples/hatra2/vis_code.svg
deleted file mode 100644
index 8021402..0000000
--- a/src/assets/code_examples/hatra2/vis_code.svg
+++ /dev/null
@@ -1,185 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/hatra2/vis_timeline.svg b/src/assets/code_examples/hatra2/vis_timeline.svg
deleted file mode 100644
index 0a6ed68..0000000
--- a/src/assets/code_examples/hatra2/vis_timeline.svg
+++ /dev/null
@@ -1,365 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/immutable_borrow/source.rs b/src/assets/code_examples/immutable_borrow/source.rs
deleted file mode 100644
index b05ff3c..0000000
--- a/src/assets/code_examples/immutable_borrow/source.rs
+++ /dev/null
@@ -1,9 +0,0 @@
-fn main() {
- let x = String::from("hello");
- f(&x);
- println!("{}", x);
-}
-
-fn f(s : &String) {
- println!("{}", *s);
-}
\ No newline at end of file
diff --git a/src/assets/code_examples/immutable_borrow/vis_code.svg b/src/assets/code_examples/immutable_borrow/vis_code.svg
deleted file mode 100644
index dc90f9e..0000000
--- a/src/assets/code_examples/immutable_borrow/vis_code.svg
+++ /dev/null
@@ -1,183 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/immutable_borrow/vis_timeline.svg b/src/assets/code_examples/immutable_borrow/vis_timeline.svg
deleted file mode 100644
index cc96572..0000000
--- a/src/assets/code_examples/immutable_borrow/vis_timeline.svg
+++ /dev/null
@@ -1,298 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/immutable_borrow_method_call/source.rs b/src/assets/code_examples/immutable_borrow_method_call/source.rs
deleted file mode 100644
index fb1ade4..0000000
--- a/src/assets/code_examples/immutable_borrow_method_call/source.rs
+++ /dev/null
@@ -1,6 +0,0 @@
-fn main() {
- let s = String::from("hello");
- let len1 = String::len(&s);
- let len2 = s.len(); // shorthand for the above
- println!("len1 = {} = len2 = {}", len1, len2);
-}
\ No newline at end of file
diff --git a/src/assets/code_examples/immutable_borrow_method_call/vis_code.svg b/src/assets/code_examples/immutable_borrow_method_call/vis_code.svg
deleted file mode 100644
index d29b266..0000000
--- a/src/assets/code_examples/immutable_borrow_method_call/vis_code.svg
+++ /dev/null
@@ -1,180 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/immutable_borrow_method_call/vis_timeline.svg b/src/assets/code_examples/immutable_borrow_method_call/vis_timeline.svg
deleted file mode 100644
index 5c6fbbd..0000000
--- a/src/assets/code_examples/immutable_borrow_method_call/vis_timeline.svg
+++ /dev/null
@@ -1,324 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/immutable_variable/source.rs b/src/assets/code_examples/immutable_variable/source.rs
deleted file mode 100644
index 1a4d6f6..0000000
--- a/src/assets/code_examples/immutable_variable/source.rs
+++ /dev/null
@@ -1,3 +0,0 @@
-fn main() {
- let x = 5;
-}
\ No newline at end of file
diff --git a/src/assets/code_examples/immutable_variable/vis_code.svg b/src/assets/code_examples/immutable_variable/vis_code.svg
deleted file mode 100644
index 9453e41..0000000
--- a/src/assets/code_examples/immutable_variable/vis_code.svg
+++ /dev/null
@@ -1,177 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/immutable_variable/vis_timeline.svg b/src/assets/code_examples/immutable_variable/vis_timeline.svg
deleted file mode 100644
index bf21958..0000000
--- a/src/assets/code_examples/immutable_variable/vis_timeline.svg
+++ /dev/null
@@ -1,246 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/move_assignment/source.rs b/src/assets/code_examples/move_assignment/source.rs
deleted file mode 100644
index b5b8d61..0000000
--- a/src/assets/code_examples/move_assignment/source.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-fn main() {
- let x = String::from("hello");
- let mut y = String::from("test");
- y = x;
-}
\ No newline at end of file
diff --git a/src/assets/code_examples/move_assignment/vis_code.svg b/src/assets/code_examples/move_assignment/vis_code.svg
deleted file mode 100644
index 964718f..0000000
--- a/src/assets/code_examples/move_assignment/vis_code.svg
+++ /dev/null
@@ -1,179 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/move_assignment/vis_timeline.svg b/src/assets/code_examples/move_assignment/vis_timeline.svg
deleted file mode 100644
index da51429..0000000
--- a/src/assets/code_examples/move_assignment/vis_timeline.svg
+++ /dev/null
@@ -1,270 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/move_different_scope/source.rs b/src/assets/code_examples/move_different_scope/source.rs
deleted file mode 100644
index 9c0d728..0000000
--- a/src/assets/code_examples/move_different_scope/source.rs
+++ /dev/null
@@ -1,9 +0,0 @@
-fn main() {
- let x = String::from("hello");
- let z = {
- let y = x;
- println("{}", y);
- // ...
- };
- println!("Hello, world!");
-}
\ No newline at end of file
diff --git a/src/assets/code_examples/move_different_scope/vis_code.svg b/src/assets/code_examples/move_different_scope/vis_code.svg
deleted file mode 100644
index 2d01c46..0000000
--- a/src/assets/code_examples/move_different_scope/vis_code.svg
+++ /dev/null
@@ -1,183 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/move_different_scope/vis_timeline.svg b/src/assets/code_examples/move_different_scope/vis_timeline.svg
deleted file mode 100644
index acc3af2..0000000
--- a/src/assets/code_examples/move_different_scope/vis_timeline.svg
+++ /dev/null
@@ -1,285 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/move_func_return/source.rs b/src/assets/code_examples/move_func_return/source.rs
deleted file mode 100644
index 6798b2b..0000000
--- a/src/assets/code_examples/move_func_return/source.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-fn f() {
- let x = String::from("hello");
- // ...
- x
-}
-
-fn main() {
- let s = f();
- println!("{}", s);
-}
\ No newline at end of file
diff --git a/src/assets/code_examples/move_func_return/vis_code.svg b/src/assets/code_examples/move_func_return/vis_code.svg
deleted file mode 100644
index afe7c7d..0000000
--- a/src/assets/code_examples/move_func_return/vis_code.svg
+++ /dev/null
@@ -1,184 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/move_func_return/vis_timeline.svg b/src/assets/code_examples/move_func_return/vis_timeline.svg
deleted file mode 100644
index 0ce8adb..0000000
--- a/src/assets/code_examples/move_func_return/vis_timeline.svg
+++ /dev/null
@@ -1,276 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/multiple_immutable_borrow/source.rs b/src/assets/code_examples/multiple_immutable_borrow/source.rs
deleted file mode 100644
index 87f645a..0000000
--- a/src/assets/code_examples/multiple_immutable_borrow/source.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-fn main() {
- let x = String::from("hello");
- let y = &x;
- let z = &x;
- f(y, z);
-}
-
-fn f(s1 : &String, s2 : &String) {
- println!("{} and {}", s1, s2);
-}
\ No newline at end of file
diff --git a/src/assets/code_examples/multiple_immutable_borrow/vis_code.svg b/src/assets/code_examples/multiple_immutable_borrow/vis_code.svg
deleted file mode 100644
index 1996a2e..0000000
--- a/src/assets/code_examples/multiple_immutable_borrow/vis_code.svg
+++ /dev/null
@@ -1,185 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/multiple_immutable_borrow/vis_timeline.svg b/src/assets/code_examples/multiple_immutable_borrow/vis_timeline.svg
deleted file mode 100644
index 9f4639c..0000000
--- a/src/assets/code_examples/multiple_immutable_borrow/vis_timeline.svg
+++ /dev/null
@@ -1,378 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/mutable_borrow/source.rs b/src/assets/code_examples/mutable_borrow/source.rs
deleted file mode 100644
index f49b480..0000000
--- a/src/assets/code_examples/mutable_borrow/source.rs
+++ /dev/null
@@ -1,9 +0,0 @@
-fn main() {
- let mut x = String::from("Hello");
- world(&mut x);
- println!("{}", x);
-}
-
-fn world(s : &mut String) {
- s.push_str(", world");
-}
\ No newline at end of file
diff --git a/src/assets/code_examples/mutable_borrow/vis_code.svg b/src/assets/code_examples/mutable_borrow/vis_code.svg
deleted file mode 100644
index 631f094..0000000
--- a/src/assets/code_examples/mutable_borrow/vis_code.svg
+++ /dev/null
@@ -1,183 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/mutable_borrow/vis_timeline.svg b/src/assets/code_examples/mutable_borrow/vis_timeline.svg
deleted file mode 100644
index 0e2476f..0000000
--- a/src/assets/code_examples/mutable_borrow/vis_timeline.svg
+++ /dev/null
@@ -1,292 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/mutable_borrow_method_call/source.rs b/src/assets/code_examples/mutable_borrow_method_call/source.rs
deleted file mode 100644
index 4a8cfd2..0000000
--- a/src/assets/code_examples/mutable_borrow_method_call/source.rs
+++ /dev/null
@@ -1,7 +0,0 @@
-fn main() {
- let mut s1 = String::from("Hello");
- let s2 = String::from(", world");
- String::push_str(&mut s1, &s2);
- s1.push_str(&s2); // shorthand for the above
- println!("{}", s1); // prints "Hello, world, world"
-}
\ No newline at end of file
diff --git a/src/assets/code_examples/mutable_borrow_method_call/vis_code.svg b/src/assets/code_examples/mutable_borrow_method_call/vis_code.svg
deleted file mode 100644
index 992ad01..0000000
--- a/src/assets/code_examples/mutable_borrow_method_call/vis_code.svg
+++ /dev/null
@@ -1,181 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/mutable_borrow_method_call/vis_timeline.svg b/src/assets/code_examples/mutable_borrow_method_call/vis_timeline.svg
deleted file mode 100644
index 7b7531b..0000000
--- a/src/assets/code_examples/mutable_borrow_method_call/vis_timeline.svg
+++ /dev/null
@@ -1,319 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/mutable_variables/source.rs b/src/assets/code_examples/mutable_variables/source.rs
deleted file mode 100644
index e53756b..0000000
--- a/src/assets/code_examples/mutable_variables/source.rs
+++ /dev/null
@@ -1,4 +0,0 @@
-fn main() {
- let mut x = 5;
- x = 6; //OK
-}
\ No newline at end of file
diff --git a/src/assets/code_examples/mutable_variables/vis_code.svg b/src/assets/code_examples/mutable_variables/vis_code.svg
deleted file mode 100644
index 73ec967..0000000
--- a/src/assets/code_examples/mutable_variables/vis_code.svg
+++ /dev/null
@@ -1,178 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/mutable_variables/vis_timeline.svg b/src/assets/code_examples/mutable_variables/vis_timeline.svg
deleted file mode 100644
index 0d84d78..0000000
--- a/src/assets/code_examples/mutable_variables/vis_timeline.svg
+++ /dev/null
@@ -1,252 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/nll_lexical_scope_different/source.rs b/src/assets/code_examples/nll_lexical_scope_different/source.rs
deleted file mode 100644
index e3022a9..0000000
--- a/src/assets/code_examples/nll_lexical_scope_different/source.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-fn main() {
- let mut x = String::from("Hello");
- let y = &mut x;
- world(y);
- let z = &mut x; // OK, because y's lifetime has ended (last use was on previous line)
- world(z);
- x.push_str("!!"); // Also OK, because y and z's lifetimes have ended
- println!("{}", x);
-}
-
-fn world(s : &mut String) {
- s.push_str(", world");
-}
\ No newline at end of file
diff --git a/src/assets/code_examples/nll_lexical_scope_different/vis_code.svg b/src/assets/code_examples/nll_lexical_scope_different/vis_code.svg
deleted file mode 100644
index e2be808..0000000
--- a/src/assets/code_examples/nll_lexical_scope_different/vis_code.svg
+++ /dev/null
@@ -1,187 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/nll_lexical_scope_different/vis_timeline.svg b/src/assets/code_examples/nll_lexical_scope_different/vis_timeline.svg
deleted file mode 100644
index b3813de..0000000
--- a/src/assets/code_examples/nll_lexical_scope_different/vis_timeline.svg
+++ /dev/null
@@ -1,362 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/printing/source.rs b/src/assets/code_examples/printing/source.rs
deleted file mode 100644
index 966217a..0000000
--- a/src/assets/code_examples/printing/source.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-fn main() {
- let x = 1;
- let y = 2;
- println!("x = {} and y = {}", x, y);
-}
\ No newline at end of file
diff --git a/src/assets/code_examples/printing/vis_code.svg b/src/assets/code_examples/printing/vis_code.svg
deleted file mode 100644
index f6298c2..0000000
--- a/src/assets/code_examples/printing/vis_code.svg
+++ /dev/null
@@ -1,179 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/printing/vis_timeline.svg b/src/assets/code_examples/printing/vis_timeline.svg
deleted file mode 100644
index a6633af..0000000
--- a/src/assets/code_examples/printing/vis_timeline.svg
+++ /dev/null
@@ -1,282 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/string_from/source.rs b/src/assets/code_examples/string_from/source.rs
deleted file mode 100644
index eee0975..0000000
--- a/src/assets/code_examples/string_from/source.rs
+++ /dev/null
@@ -1,3 +0,0 @@
-fn main() {
- let s = String::from("hello");
-}
\ No newline at end of file
diff --git a/src/assets/code_examples/string_from/vis_code.svg b/src/assets/code_examples/string_from/vis_code.svg
deleted file mode 100644
index 2b4ee74..0000000
--- a/src/assets/code_examples/string_from/vis_code.svg
+++ /dev/null
@@ -1,177 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/string_from/vis_timeline.svg b/src/assets/code_examples/string_from/vis_timeline.svg
deleted file mode 100644
index 12a08b7..0000000
--- a/src/assets/code_examples/string_from/vis_timeline.svg
+++ /dev/null
@@ -1,223 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/string_from_move_print/source.rs b/src/assets/code_examples/string_from_move_print/source.rs
deleted file mode 100644
index 5717115..0000000
--- a/src/assets/code_examples/string_from_move_print/source.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-fn main() {
- let x = String::from("hello");
- let y = x;
- println!("{}", y);
-}
\ No newline at end of file
diff --git a/src/assets/code_examples/string_from_move_print/vis_code.svg b/src/assets/code_examples/string_from_move_print/vis_code.svg
deleted file mode 100644
index d569627..0000000
--- a/src/assets/code_examples/string_from_move_print/vis_code.svg
+++ /dev/null
@@ -1,179 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/string_from_move_print/vis_timeline.svg b/src/assets/code_examples/string_from_move_print/vis_timeline.svg
deleted file mode 100644
index ee67a43..0000000
--- a/src/assets/code_examples/string_from_move_print/vis_timeline.svg
+++ /dev/null
@@ -1,275 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/string_from_print/source.rs b/src/assets/code_examples/string_from_print/source.rs
deleted file mode 100644
index 736a0c1..0000000
--- a/src/assets/code_examples/string_from_print/source.rs
+++ /dev/null
@@ -1,4 +0,0 @@
-fn main() {
- let s = String::from("hello");
- println!("{}", s);
-}
\ No newline at end of file
diff --git a/src/assets/code_examples/string_from_print/vis_code.svg b/src/assets/code_examples/string_from_print/vis_code.svg
deleted file mode 100644
index 273becb..0000000
--- a/src/assets/code_examples/string_from_print/vis_code.svg
+++ /dev/null
@@ -1,178 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/string_from_print/vis_timeline.svg b/src/assets/code_examples/string_from_print/vis_timeline.svg
deleted file mode 100644
index 0388958..0000000
--- a/src/assets/code_examples/string_from_print/vis_timeline.svg
+++ /dev/null
@@ -1,261 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/struct_lifetime/source.rs b/src/assets/code_examples/struct_lifetime/source.rs
deleted file mode 100644
index 13d61ac..0000000
--- a/src/assets/code_examples/struct_lifetime/source.rs
+++ /dev/null
@@ -1,17 +0,0 @@
-struct Excerpt<'a> {
- p: &'a str,
-}
-
-fn some_function() {
- let n = String::from("Ok. I'm fine.");
- let first = n.split('.').next().expect("Could not find a '.'");
- let i = Excerpt {
- p: first,
- };
- // 'i' cannot be returned be returned
- // because the struct outlives 'n'
-}
-
-fn main() {
- some_function();
-}
\ No newline at end of file
diff --git a/src/assets/code_examples/struct_lifetime/vis_code.svg b/src/assets/code_examples/struct_lifetime/vis_code.svg
deleted file mode 100644
index a0f7f71..0000000
--- a/src/assets/code_examples/struct_lifetime/vis_code.svg
+++ /dev/null
@@ -1,192 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/struct_lifetime/vis_timeline.svg b/src/assets/code_examples/struct_lifetime/vis_timeline.svg
deleted file mode 100644
index 606c7da..0000000
--- a/src/assets/code_examples/struct_lifetime/vis_timeline.svg
+++ /dev/null
@@ -1,341 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/struct_rect/source.rs b/src/assets/code_examples/struct_rect/source.rs
deleted file mode 100644
index 06c34e6..0000000
--- a/src/assets/code_examples/struct_rect/source.rs
+++ /dev/null
@@ -1,22 +0,0 @@
-struct Rect {
- w: u32,
- h: u32,
-}
-
-fn main() {
- let r = Rect {
- w: 30,
- h: 50,
- };
-
- println!(
- "The area of the rectangle is {} square pixels.",
- area(&r)
- );
-
- println!("The height of that is {}.", r.h);
-}
-
-fn area(rect: &Rect) -> u32 {
- rect.w * rect.h
-}
\ No newline at end of file
diff --git a/src/assets/code_examples/struct_rect/vis_code.svg b/src/assets/code_examples/struct_rect/vis_code.svg
deleted file mode 100644
index eec3b7a..0000000
--- a/src/assets/code_examples/struct_rect/vis_code.svg
+++ /dev/null
@@ -1,196 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/struct_rect/vis_timeline.svg b/src/assets/code_examples/struct_rect/vis_timeline.svg
deleted file mode 100644
index 5d2a14f..0000000
--- a/src/assets/code_examples/struct_rect/vis_timeline.svg
+++ /dev/null
@@ -1,336 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/struct_rect2/source.rs b/src/assets/code_examples/struct_rect2/source.rs
deleted file mode 100644
index 77ca4f4..0000000
--- a/src/assets/code_examples/struct_rect2/source.rs
+++ /dev/null
@@ -1,26 +0,0 @@
-struct Rectangle {
- width: u32,
- height: u32,
-}
-
-impl Rectangle {
- fn area(&self) -> u32 {
- self.width * self.height
- }
-}
-
-fn print_area(rect: &Rectangle) {
- println!(
- "The area of the rectangle is {} square pixels.",
- rect.area() // dot even though it's actually a reference
- );
-}
-
-fn main() {
- let r = Rectangle {
- width: 30,
- height: 50,
- };
-
- print_area(&r);
-}
\ No newline at end of file
diff --git a/src/assets/code_examples/struct_rect2/vis_code.svg b/src/assets/code_examples/struct_rect2/vis_code.svg
deleted file mode 100644
index 929ae96..0000000
--- a/src/assets/code_examples/struct_rect2/vis_code.svg
+++ /dev/null
@@ -1,200 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/struct_rect2/vis_timeline.svg b/src/assets/code_examples/struct_rect2/vis_timeline.svg
deleted file mode 100644
index 825f859..0000000
--- a/src/assets/code_examples/struct_rect2/vis_timeline.svg
+++ /dev/null
@@ -1,347 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/struct_string/source.rs b/src/assets/code_examples/struct_string/source.rs
deleted file mode 100644
index 3238da1..0000000
--- a/src/assets/code_examples/struct_string/source.rs
+++ /dev/null
@@ -1,11 +0,0 @@
-struct Foo {
- x: i32,
- y: String,
-}
-
-fn main() {
- let _y = String :: from("bar");
- let f = Foo { x: 5, y: _y };
- println!("{}", f.x);
- println!("{}", f.y);
-}
\ No newline at end of file
diff --git a/src/assets/code_examples/struct_string/vis_code.svg b/src/assets/code_examples/struct_string/vis_code.svg
deleted file mode 100644
index 27d7dec..0000000
--- a/src/assets/code_examples/struct_string/vis_code.svg
+++ /dev/null
@@ -1,185 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/code_examples/struct_string/vis_timeline.svg b/src/assets/code_examples/struct_string/vis_timeline.svg
deleted file mode 100644
index 71e2e52..0000000
--- a/src/assets/code_examples/struct_string/vis_timeline.svg
+++ /dev/null
@@ -1,338 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/img/0.svg b/src/assets/img/0.svg
deleted file mode 100644
index 55daf77..0000000
--- a/src/assets/img/0.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/src/assets/img/1.svg b/src/assets/img/1.svg
deleted file mode 100644
index c7d444b..0000000
--- a/src/assets/img/1.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/src/assets/img/2.svg b/src/assets/img/2.svg
deleted file mode 100644
index 0482578..0000000
--- a/src/assets/img/2.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/src/assets/img/3.svg b/src/assets/img/3.svg
deleted file mode 100644
index b824af3..0000000
--- a/src/assets/img/3.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/src/assets/img/4.svg b/src/assets/img/4.svg
deleted file mode 100644
index 00aea1f..0000000
--- a/src/assets/img/4.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/src/assets/img/5.svg b/src/assets/img/5.svg
deleted file mode 100644
index 60d7447..0000000
--- a/src/assets/img/5.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/src/assets/img/placeholder.svg b/src/assets/img/placeholder.svg
deleted file mode 100644
index fd5c02e..0000000
--- a/src/assets/img/placeholder.svg
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
\ No newline at end of file
diff --git a/src/assets/modified_examples/func_take_ownership/source.rs b/src/assets/modified_examples/func_take_ownership/source.rs
deleted file mode 100644
index cdea2a0..0000000
--- a/src/assets/modified_examples/func_take_ownership/source.rs
+++ /dev/null
@@ -1,9 +0,0 @@
-fn main() {
- let s = String::from("hello");
- takes_ownership(s);
- // println!("{}", s) // won't compile if added
-}
-
-fn takes_ownership(some_string: String) {
- println!("{}", some_string);
-}
\ No newline at end of file
diff --git a/src/assets/modified_examples/func_take_ownership/vis_code.svg b/src/assets/modified_examples/func_take_ownership/vis_code.svg
deleted file mode 100644
index f10aa46..0000000
--- a/src/assets/modified_examples/func_take_ownership/vis_code.svg
+++ /dev/null
@@ -1,183 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/modified_examples/func_take_ownership/vis_timeline.svg b/src/assets/modified_examples/func_take_ownership/vis_timeline.svg
deleted file mode 100644
index 23490a1..0000000
--- a/src/assets/modified_examples/func_take_ownership/vis_timeline.svg
+++ /dev/null
@@ -1,276 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/modified_examples/func_take_return_ownership/source.rs b/src/assets/modified_examples/func_take_return_ownership/source.rs
deleted file mode 100644
index 46846cc..0000000
--- a/src/assets/modified_examples/func_take_return_ownership/source.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-fn take_and_return_ownership(some_string : String) -> String {
- println!("{}", some_string);
- some_string
-}
-
-fn main() {
- let mut s = String::from("hello");
- s = take_and_return_ownership(s);
- println!("{}", s); // OK
-}
\ No newline at end of file
diff --git a/src/assets/modified_examples/func_take_return_ownership/vis_code.svg b/src/assets/modified_examples/func_take_return_ownership/vis_code.svg
deleted file mode 100644
index 8da896f..0000000
--- a/src/assets/modified_examples/func_take_return_ownership/vis_code.svg
+++ /dev/null
@@ -1,184 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/modified_examples/func_take_return_ownership/vis_timeline.svg b/src/assets/modified_examples/func_take_return_ownership/vis_timeline.svg
deleted file mode 100644
index ce6acb3..0000000
--- a/src/assets/modified_examples/func_take_return_ownership/vis_timeline.svg
+++ /dev/null
@@ -1,300 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/modified_examples/hatra2/source.rs b/src/assets/modified_examples/hatra2/source.rs
deleted file mode 100644
index 61992d0..0000000
--- a/src/assets/modified_examples/hatra2/source.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-fn main(){
- let mut s = String::from("hello");
-
- let r1 = &s;
- let r2 = &s;
- assert!(compare_strings(r1, r2));
-
- let r3 = &mut s;
- clear_string(r3);
-}
\ No newline at end of file
diff --git a/src/assets/modified_examples/hatra2/vis_code.svg b/src/assets/modified_examples/hatra2/vis_code.svg
deleted file mode 100644
index 8021402..0000000
--- a/src/assets/modified_examples/hatra2/vis_code.svg
+++ /dev/null
@@ -1,185 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/modified_examples/hatra2/vis_timeline.svg b/src/assets/modified_examples/hatra2/vis_timeline.svg
deleted file mode 100644
index 0a6ed68..0000000
--- a/src/assets/modified_examples/hatra2/vis_timeline.svg
+++ /dev/null
@@ -1,365 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/modified_examples/immutable_borrow/source.rs b/src/assets/modified_examples/immutable_borrow/source.rs
deleted file mode 100644
index b05ff3c..0000000
--- a/src/assets/modified_examples/immutable_borrow/source.rs
+++ /dev/null
@@ -1,9 +0,0 @@
-fn main() {
- let x = String::from("hello");
- f(&x);
- println!("{}", x);
-}
-
-fn f(s : &String) {
- println!("{}", *s);
-}
\ No newline at end of file
diff --git a/src/assets/modified_examples/immutable_borrow/vis_code.svg b/src/assets/modified_examples/immutable_borrow/vis_code.svg
deleted file mode 100644
index dc90f9e..0000000
--- a/src/assets/modified_examples/immutable_borrow/vis_code.svg
+++ /dev/null
@@ -1,183 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/modified_examples/immutable_borrow/vis_timeline.svg b/src/assets/modified_examples/immutable_borrow/vis_timeline.svg
deleted file mode 100644
index cc96572..0000000
--- a/src/assets/modified_examples/immutable_borrow/vis_timeline.svg
+++ /dev/null
@@ -1,298 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/modified_examples/immutable_borrow_method_call/source.rs b/src/assets/modified_examples/immutable_borrow_method_call/source.rs
deleted file mode 100644
index fb1ade4..0000000
--- a/src/assets/modified_examples/immutable_borrow_method_call/source.rs
+++ /dev/null
@@ -1,6 +0,0 @@
-fn main() {
- let s = String::from("hello");
- let len1 = String::len(&s);
- let len2 = s.len(); // shorthand for the above
- println!("len1 = {} = len2 = {}", len1, len2);
-}
\ No newline at end of file
diff --git a/src/assets/modified_examples/immutable_borrow_method_call/vis_code.svg b/src/assets/modified_examples/immutable_borrow_method_call/vis_code.svg
deleted file mode 100644
index d29b266..0000000
--- a/src/assets/modified_examples/immutable_borrow_method_call/vis_code.svg
+++ /dev/null
@@ -1,180 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/modified_examples/immutable_borrow_method_call/vis_timeline.svg b/src/assets/modified_examples/immutable_borrow_method_call/vis_timeline.svg
deleted file mode 100644
index 5c6fbbd..0000000
--- a/src/assets/modified_examples/immutable_borrow_method_call/vis_timeline.svg
+++ /dev/null
@@ -1,324 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/modified_examples/move_assignment/source.rs b/src/assets/modified_examples/move_assignment/source.rs
deleted file mode 100644
index b5b8d61..0000000
--- a/src/assets/modified_examples/move_assignment/source.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-fn main() {
- let x = String::from("hello");
- let mut y = String::from("test");
- y = x;
-}
\ No newline at end of file
diff --git a/src/assets/modified_examples/move_assignment/vis_code.svg b/src/assets/modified_examples/move_assignment/vis_code.svg
deleted file mode 100644
index 964718f..0000000
--- a/src/assets/modified_examples/move_assignment/vis_code.svg
+++ /dev/null
@@ -1,179 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/modified_examples/move_assignment/vis_timeline.svg b/src/assets/modified_examples/move_assignment/vis_timeline.svg
deleted file mode 100644
index da51429..0000000
--- a/src/assets/modified_examples/move_assignment/vis_timeline.svg
+++ /dev/null
@@ -1,270 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/modified_examples/move_func_return/source.rs b/src/assets/modified_examples/move_func_return/source.rs
deleted file mode 100644
index 6798b2b..0000000
--- a/src/assets/modified_examples/move_func_return/source.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-fn f() {
- let x = String::from("hello");
- // ...
- x
-}
-
-fn main() {
- let s = f();
- println!("{}", s);
-}
\ No newline at end of file
diff --git a/src/assets/modified_examples/move_func_return/vis_code.svg b/src/assets/modified_examples/move_func_return/vis_code.svg
deleted file mode 100644
index afe7c7d..0000000
--- a/src/assets/modified_examples/move_func_return/vis_code.svg
+++ /dev/null
@@ -1,184 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/modified_examples/move_func_return/vis_timeline.svg b/src/assets/modified_examples/move_func_return/vis_timeline.svg
deleted file mode 100644
index 0ce8adb..0000000
--- a/src/assets/modified_examples/move_func_return/vis_timeline.svg
+++ /dev/null
@@ -1,276 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/modified_examples/multiple_immutable_borrow/source.rs b/src/assets/modified_examples/multiple_immutable_borrow/source.rs
deleted file mode 100644
index 87f645a..0000000
--- a/src/assets/modified_examples/multiple_immutable_borrow/source.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-fn main() {
- let x = String::from("hello");
- let y = &x;
- let z = &x;
- f(y, z);
-}
-
-fn f(s1 : &String, s2 : &String) {
- println!("{} and {}", s1, s2);
-}
\ No newline at end of file
diff --git a/src/assets/modified_examples/multiple_immutable_borrow/vis_code.svg b/src/assets/modified_examples/multiple_immutable_borrow/vis_code.svg
deleted file mode 100644
index 1996a2e..0000000
--- a/src/assets/modified_examples/multiple_immutable_borrow/vis_code.svg
+++ /dev/null
@@ -1,185 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/modified_examples/multiple_immutable_borrow/vis_timeline.svg b/src/assets/modified_examples/multiple_immutable_borrow/vis_timeline.svg
deleted file mode 100644
index 9f4639c..0000000
--- a/src/assets/modified_examples/multiple_immutable_borrow/vis_timeline.svg
+++ /dev/null
@@ -1,378 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/modified_examples/mutable_borrow/source.rs b/src/assets/modified_examples/mutable_borrow/source.rs
deleted file mode 100644
index f49b480..0000000
--- a/src/assets/modified_examples/mutable_borrow/source.rs
+++ /dev/null
@@ -1,9 +0,0 @@
-fn main() {
- let mut x = String::from("Hello");
- world(&mut x);
- println!("{}", x);
-}
-
-fn world(s : &mut String) {
- s.push_str(", world");
-}
\ No newline at end of file
diff --git a/src/assets/modified_examples/mutable_borrow/vis_code.svg b/src/assets/modified_examples/mutable_borrow/vis_code.svg
deleted file mode 100644
index 631f094..0000000
--- a/src/assets/modified_examples/mutable_borrow/vis_code.svg
+++ /dev/null
@@ -1,183 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/modified_examples/mutable_borrow/vis_timeline.svg b/src/assets/modified_examples/mutable_borrow/vis_timeline.svg
deleted file mode 100644
index 0e2476f..0000000
--- a/src/assets/modified_examples/mutable_borrow/vis_timeline.svg
+++ /dev/null
@@ -1,292 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/modified_examples/mutable_borrow_method_call/source.rs b/src/assets/modified_examples/mutable_borrow_method_call/source.rs
deleted file mode 100644
index 4a8cfd2..0000000
--- a/src/assets/modified_examples/mutable_borrow_method_call/source.rs
+++ /dev/null
@@ -1,7 +0,0 @@
-fn main() {
- let mut s1 = String::from("Hello");
- let s2 = String::from(", world");
- String::push_str(&mut s1, &s2);
- s1.push_str(&s2); // shorthand for the above
- println!("{}", s1); // prints "Hello, world, world"
-}
\ No newline at end of file
diff --git a/src/assets/modified_examples/mutable_borrow_method_call/vis_code.svg b/src/assets/modified_examples/mutable_borrow_method_call/vis_code.svg
deleted file mode 100644
index 992ad01..0000000
--- a/src/assets/modified_examples/mutable_borrow_method_call/vis_code.svg
+++ /dev/null
@@ -1,181 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/modified_examples/mutable_borrow_method_call/vis_timeline.svg b/src/assets/modified_examples/mutable_borrow_method_call/vis_timeline.svg
deleted file mode 100644
index 7b7531b..0000000
--- a/src/assets/modified_examples/mutable_borrow_method_call/vis_timeline.svg
+++ /dev/null
@@ -1,319 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/modified_examples/nll_lexical_scope_different/source.rs b/src/assets/modified_examples/nll_lexical_scope_different/source.rs
deleted file mode 100644
index e3022a9..0000000
--- a/src/assets/modified_examples/nll_lexical_scope_different/source.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-fn main() {
- let mut x = String::from("Hello");
- let y = &mut x;
- world(y);
- let z = &mut x; // OK, because y's lifetime has ended (last use was on previous line)
- world(z);
- x.push_str("!!"); // Also OK, because y and z's lifetimes have ended
- println!("{}", x);
-}
-
-fn world(s : &mut String) {
- s.push_str(", world");
-}
\ No newline at end of file
diff --git a/src/assets/modified_examples/nll_lexical_scope_different/vis_code.svg b/src/assets/modified_examples/nll_lexical_scope_different/vis_code.svg
deleted file mode 100644
index e2be808..0000000
--- a/src/assets/modified_examples/nll_lexical_scope_different/vis_code.svg
+++ /dev/null
@@ -1,187 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/modified_examples/nll_lexical_scope_different/vis_timeline.svg b/src/assets/modified_examples/nll_lexical_scope_different/vis_timeline.svg
deleted file mode 100644
index b3813de..0000000
--- a/src/assets/modified_examples/nll_lexical_scope_different/vis_timeline.svg
+++ /dev/null
@@ -1,362 +0,0 @@
-
\ No newline at end of file
diff --git a/src/borrowing.md b/src/borrowing.md
index 4441ef0..f8e0011 100644
--- a/src/borrowing.md
+++ b/src/borrowing.md
@@ -13,10 +13,18 @@ example, `take_and_return_ownership` below takes ownership of a string
resource and returns ownership of that exact same resource. The caller, `main`,
assigns the returned resource to the same variable, `s`.
-