summaryrefslogtreecommitdiff
path: root/Shadowing variables.md
diff options
context:
space:
mode:
Diffstat (limited to 'Shadowing variables.md')
-rw-r--r--Shadowing variables.md12
1 files changed, 12 insertions, 0 deletions
diff --git a/Shadowing variables.md b/Shadowing variables.md
new file mode 100644
index 0000000..ce10d66
--- /dev/null
+++ b/Shadowing variables.md
@@ -0,0 +1,12 @@
+[[Rust]]
+
+It is basically redeclaring the same variable, but it can be redeclared with a **different type**. A immutable variable can also be shadowed.
+
+Shadowing is undone when the scope ends, for example in a closure I can shadow a variable from the parent scope, but in the parent scope after the child scope ends we have the original value not the one from the child scope.
+
+It is useful for reusing a name, ie:
+```rust
+let spaces = " ";
+let spaces = spaces.len();
+```
+> the type of spaces changes from string to u32.