Rollup merge of #28889 - JIghtuse:str_doc, r=steveklabnik

This commit is contained in:
Steve Klabnik 2015-10-07 18:18:38 -04:00
commit fb09639d92
2 changed files with 11 additions and 11 deletions

View File

@ -42,12 +42,12 @@ loop is just a handy way to write this `loop`/`match`/`break` construct.
`for` loops aren't the only thing that uses iterators, however. Writing your
own iterator involves implementing the `Iterator` trait. While doing that is
outside of the scope of this guide, Rust provides a number of useful iterators
to accomplish various tasks. Before we talk about those, we should talk about a
Rust anti-pattern. And that's using ranges like this.
to accomplish various tasks. But first, a few notes about limitations of ranges.
Yes, we just talked about how ranges are cool. But ranges are also very
primitive. For example, if you needed to iterate over the contents of a vector,
you may be tempted to write this:
Ranges are very primitive, and we often can use better alternatives. Consider
following Rust anti-pattern: using ranges to emulate a C-style `for` loop. Lets
suppose you needed to iterate over the contents of a vector. You may be tempted
to write this:
```rust
let nums = vec![1, 2, 3];
@ -281,8 +281,8 @@ If you are trying to execute a closure on an iterator for its side effects,
just use `for` instead.
There are tons of interesting iterator adapters. `take(n)` will return an
iterator over the next `n` elements of the original iterator. Let's try it out with our infinite
iterator from before:
iterator over the next `n` elements of the original iterator. Let's try it out
with an infinite iterator:
```rust
for i in (1..).take(5) {

View File

@ -43,11 +43,11 @@ With that in mind, lets learn about lifetimes.
Lending out a reference to a resource that someone else owns can be
complicated. For example, imagine this set of operations:
- I acquire a handle to some kind of resource.
- I lend you a reference to the resource.
- I decide Im done with the resource, and deallocate it, while you still have
1. I acquire a handle to some kind of resource.
2. I lend you a reference to the resource.
3. I decide Im done with the resource, and deallocate it, while you still have
your reference.
- You decide to use the resource.
4. You decide to use the resource.
Uh oh! Your reference is pointing to an invalid resource. This is called a
dangling pointer or use after free, when the resource is memory.