Explain surprising new syntax appearing in example code
In a straight-through read of "Syntax and Semantics," the first time we meet a generic, and the first time we meet a vector, is when a Vec<T> shows up in this example. I'm not sure that I could argue that the whole section should appear later in the book than the ones on vectors and generics, so instead just give the reader a brief introduction to both and a promise to follow up later.
This commit is contained in:
parent
5daa75373d
commit
e22ceea1a7
@ -51,15 +51,24 @@ fn foo() {
|
||||
}
|
||||
```
|
||||
|
||||
When `v` comes into scope, a new [`Vec<T>`][vect] is created. In this case, the
|
||||
vector also allocates space on [the heap][heap], for the three elements. When
|
||||
`v` goes out of scope at the end of `foo()`, Rust will clean up everything
|
||||
related to the vector, even the heap-allocated memory. This happens
|
||||
deterministically, at the end of the scope.
|
||||
When `v` comes into scope, a new [vector][] is created, and it allocates space
|
||||
on the heap for each of its elements. When `v` goes out of scope at the end of
|
||||
`foo()`, Rust will clean up everything related to the vector, even the
|
||||
heap-allocated memory. This happens deterministically, at the end of the scope.
|
||||
|
||||
[vect]: ../std/vec/struct.Vec.html
|
||||
We'll cover [vectors][vector] in detail later in this chapter; we only use them
|
||||
here as an example of a type that allocates space on the heap at runtime. They
|
||||
behave like [arrays][], except their size may change by `push()`ing more
|
||||
elements onto them.
|
||||
|
||||
Vectors have a [generic type][generics] `Vec<T>`, so in this example `v` will have type
|
||||
`Vec<i32>`. We'll cover generics in detail later in this chapter.
|
||||
|
||||
[arrays]: primitive-types.html#arrays
|
||||
[vector]: vectors.html
|
||||
[heap]: the-stack-and-the-heap.html
|
||||
[bindings]: variable-bindings.html
|
||||
[generics]: generics.html
|
||||
|
||||
# Move semantics
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user