diff --git a/blog/TLDR-rust-2020-09-19.markdown b/blog/TLDR-rust-2020-09-19.markdown
index bde8f30..62253ef 100644
--- a/blog/TLDR-rust-2020-09-19.markdown
+++ b/blog/TLDR-rust-2020-09-19.markdown
@@ -19,9 +19,9 @@ various patterns used in Rust code.
Also I'm happy to introduce Mara to the blog!
-[Hey, happy to be here! I'm Mara, I'll interject with side information,
-challenge assertions and more! Thanks for inviting
-me!](conversation://Mara/hacker)
+[Hey, happy to be here! I'm Mara, a shark hacker from Christine's imagination.
+I'll interject with side information, challenge assertions and more! Thanks for
+inviting me!](conversation://Mara/hacker)
Let's start somewhere simple: functions.
@@ -371,7 +371,17 @@ that isn't covered here.](conversation://Mara/hacker)
### Lifetimes
Rust does garbage collection at compile time. It also passes ownership of memory
-to functions as soon as possible. For example:
+to functions as soon as possible. Lifetimes are how Rust calculates how "long" a
+given bit of data should exist in the program. Rust will then tell the compiled
+code to destroy the data from memory as soon as possible.
+
+[This is slightly inaccurate in order to make this simpler to explain and
+understand. It's probably more accurate to say that Rust calculates _when_ to
+collect garbage at compile time, but the difference doesn't really matter for
+most cases](conversation://Mara/hacker)
+
+For example, this code will fail to compile because `quo` was moved into the
+second divide call:
```rust
// rust
@@ -432,7 +442,11 @@ file](https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html):
eyre = "0.6"
```
-This depends on the crate [anyhow](https://crates.io/anyhow) at version 1.0.x.
+This depends on the crate [eyre](https://crates.io/crates/eyre) at version
+0.6.x.
+
+[You can do much more with version requirements with cargo, see more here.](conversation://Mara/hacker)
Dependencies can also have optional features:
@@ -520,7 +534,10 @@ Rust has three privacy levels for functions:
[You can't get a perfect analog to `pub(crate)` in Go, but internal
-packages can get close to this behavior.](conversation://Mara/hacker)
+packages can get close to this behavior. Additionally you can have a lot
+more control over access levels than this, see here
+for more information.](conversation://Mara/hacker)
## Structures
@@ -598,11 +615,17 @@ more detail about this.
## Enumerations / Tagged Unions
Enumerations, also known as tagged unions, are a way to specify a superposition
-of one of a few different kinds of values in one type. The main place they are
-used in this project is for command line parsing with
-[structopt](https://docs.rs/structopt/0.3.14/structopt/). There is no easy
+of one of a few different kinds of values in one type. A neat way to show them
+off (along with some other fancy features like the derivation system) is with the
+[structopt](https://docs.rs/structopt/0.3.14/structopt/) crate. There is no easy
analog for this in Go.
+[We've actually been dealing with enumerations ever since we touched the Result
+type earlier. Result and Option are
+implemented with enumerations.](conversation://Mara/hacker)
+
```rust
#[derive(StructOpt, Debug)]
#[structopt(about = "A simple release management tool")]
@@ -639,6 +662,11 @@ match cmd {
All variants of an enum must be matched in order for the code to compile.
+[This code was borrowed from palisade in order to
+demonstrate this better. If you want to see these patterns in action, check this
+repository out!](conversation://Mara/hacker)
+
## Testing
Test functions need to be marked with the `#[test]` annotation, then they will