Update variables.md
1) Grammar fixes in first paragraph;
2) Minor tweaks to third, fourth and fifth paragraph to make the format for examples consistent;
3) Revisions to last paragraph to shorten and improve flow of sentences.
# Variables
-A _variable_ is a component of a stack frame, either a named function parameter,
+A _variable_ is a component of a stack frame. That component can be a named function parameter,
an anonymous [temporary](expressions.html#lvalues-rvalues-and-temporaries), or a named local
variable.
A _local variable_ (or *stack-local* allocation) holds a value directly,
allocated within the stack's memory. The value is a part of the stack frame.
-Local variables are immutable unless declared otherwise like: `let mut x = ...`.
+Local variables are immutable unless declared otherwise. For example: `let mut x = ...`.
Function parameters are immutable unless declared with `mut`. The `mut` keyword
-applies only to the following parameter (so `|mut x, y|` and `fn f(mut x:
+applies only to the following parameter. For example: `|mut x, y|` and `fn f(mut x:
Box<i32>, y: Box<i32>)` declare one mutable variable `x` and one immutable
-variable `y`).
+variable `y`.
Methods that take either `self` or `Box<Self>` can optionally place them in a
-mutable variable by prefixing them with `mut` (similar to regular arguments):
+mutable variable by prefixing them with `mut` (similar to regular arguments). For example:
```rust
trait Changer: Sized {
@@ -24,8 +24,8 @@ trait Changer: Sized {
}
```
-Local variables are not initialized when allocated; the entire frame worth of
-local variables are allocated at once, on frame-entry, in an uninitialized
+Local variables are not initialized when allocated. Instead, the entire frame worth of
+local variables are allocated, on frame-entry, in an uninitialized
state. Subsequent statements within a function may or may not initialize the
local variables. Local variables can be used only after they have been
initialized; this is enforced by the compiler.
