We've seen many times how to assign a variable in Rust: we do something like let x = y;, which tells Rust to create a new variable named x and move or copy the value stored in y into it, as appropriate to the data type.
However, that's actually just a simplified case of what Rust is really doing, which is matching a pattern to a value and extracting data values from that matched pattern to store in the target variables, as in the following example:
pub struct DemoStruct {
pub id: u64,
pub name: String,
pub probability: f64,
}
// ...
let source1 = DemoStruct { id: 31, name: String::from("Example Thing"), probability: 0.42 };
let DemoStruct{ id: x, name: y, probability: z } = source1;
Okay, what just happened? First of all, we have a structure definition. We've seen those before, and the only new thing here is that we...