Skip to content

Guide: fix headings #15884

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jul 22, 2014
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
76 changes: 38 additions & 38 deletions src/doc/guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ displayed here in line with Rust's open development policy. Please open any
issues you find as usual.
</div>

## Welcome!
# Welcome!

Hey there! Welcome to the Rust guide. This is the place to be if you'd like to
learn how to program in Rust. Rust is a systems programming language with a
Expand All @@ -24,7 +24,7 @@ more advanced things.

Sound good? Let's go!

## Installing Rust
# Installing Rust

The first step to using Rust is to install it! There are a number of ways to
install Rust, but the easiest is to use the the `rustup` script. If you're on
Expand Down Expand Up @@ -106,7 +106,7 @@ mailing list](https://mail.mozilla.org/listinfo/rust-dev), [the /r/rust
subreddit](http://www.reddit.com/r/rust), and [Stack
Overflow](http://stackoverflow.com/questions/tagged/rust).

## Hello, world!
# Hello, world!

Now that you have Rust installed, let's write your first Rust program. It's
traditional to make your first program in any new language one that prints the
Expand Down Expand Up @@ -266,7 +266,7 @@ your project grows, you'll want something to help you manage all of the options
that it has, and to make it easy to share your code with other people and
projects.

## Hello, Cargo!
# Hello, Cargo!

[Cargo](http://crates.io) is a tool that Rustaceans use to help manage their
Rust projects. Cargo is currently in an alpha state, just like Rust, and so it
Expand Down Expand Up @@ -362,7 +362,7 @@ Now that you've got the tools down, let's actually learn more about the Rust
language itself. These are the basics that will serve you well through the rest
of your time with Rust.

## Variable bindings
# Variable bindings

The first thing we'll learn about are 'variable bindings.' They look like this:

Expand Down Expand Up @@ -532,7 +532,7 @@ must initialize the binding before we use it? And how does it know that we have
or have not initialized the binding? For that, we need to learn our next
concept: `if`.

## If
# If

Rust's take on `if` is not particularly complex, but it's much more like the
`if` you'll find in a dynamically typed language than in a more traditional
Expand Down Expand Up @@ -593,7 +593,7 @@ This reveals two interesting things about Rust: it is an expression-based
language, and semicolons are different than in other 'curly brace and
semicolon'-based languages. These two things are related.

### Expressions vs. Statements
## Expressions vs. Statements

Rust is primarily an expression based language. There are only two kinds of
statements, and everything else is an expression.
Expand Down Expand Up @@ -681,7 +681,7 @@ unit instead.
There's one more time in which you won't see a semicolon at the end of a line
of Rust code. For that, we'll need our next concept: functions.

## Functions
# Functions

You've already seen one function so far, the `main` function:

Expand Down Expand Up @@ -829,7 +829,7 @@ There are some additional ways to define functions, but they involve features
that we haven't learned about yet, so let's just leave it at that for now.


## Comments
# Comments

Now that we have some functions, it's a good idea to learn about comments.
Comments are notes that you leave to other programmers to help explain things
Expand Down Expand Up @@ -877,13 +877,13 @@ You can use the `rustdoc` tool to generate HTML documentation from these doc
comments. We will talk more about `rustdoc` when we get to modules, as
generally, you want to export documentation for a full module.

## Compound Data Types
# Compound Data Types

Rust, like many programming languages, has a number of different data types
that are built-in. You've already done some simple work with integers and
strings, but next, let's talk about some more complicated ways of storing data.

### Tuples
## Tuples

The first compound data type we're going to talk about are called **tuple**s.
Tuples are an ordered list of a fixed size. Like this:
Expand Down Expand Up @@ -958,7 +958,7 @@ can destructure a pattern returned by a function, as well.
Tuples are a very simple data structure, and so are not often what you want.
Let's move on to their bigger sibling, structs.

### Structs
## Structs

A struct is another form of a 'record type,' just like a tuple. There's a
difference: structs give each element that they contain a name, called a
Expand Down Expand Up @@ -1008,7 +1008,7 @@ fn main() {

This will print `The point is at (5, 0)`.

### Tuple Structs and Newtypes
## Tuple Structs and Newtypes

Rust has another data type that's like a hybrid between a tuple and a struct,
called a **tuple struct**. Tuple structs do have a name, but their fields
Expand Down Expand Up @@ -1064,7 +1064,7 @@ println!("length is {} inches", integer_length);
As you can see here, you can extract the inner integer type through a
destructuring `let`.

### Enums
## Enums

Finally, Rust has a "sum type", an **enum**. Enums are an incredibly useful
feature of Rust, and are used throughout the standard library. Enums look
Expand Down Expand Up @@ -1161,7 +1161,7 @@ useful when they're generic across types. But before we get to generics, let's
talk about how to fix this big `if`/`else` statements we've been writing. We'll
do that with `match`.

## Match
# Match

Often, a simple `if`/`else` isn't enough, because you have more than two
possible options. And `else` conditions can get incredibly complicated. So
Expand Down Expand Up @@ -1283,12 +1283,12 @@ fn main() {
In this case, it doesn't make a lot of sense, as we are just making a temporary
string where we don't need to, but sometimes, it's a nice pattern.

## Looping
# Looping

Looping is the last basic construct that we haven't learned yet in Rust. Rust has
two main looping constructs: `for` and `while`.

### `for`
## `for`

The `for` loop is used to loop a particular number of times. Rust's `for` loops
work a bit differently than in other systems languages, however. Rust's `for`
Expand Down Expand Up @@ -1337,7 +1337,7 @@ lists three things. This happens quite a bit with "C style" `for` loops.

We'll talk more about `for` when we cover **vector**s, later in the Guide.

### `while`
## `while`

The other kind of looping construct in Rust is the `while` loop. It looks like
this:
Expand Down Expand Up @@ -1375,7 +1375,7 @@ general, the more information we can give to the compiler, the better it
can do with safety and code generation. So you should always prefer
`loop` when you plan to loop infinitely.

### Ending iteration early
## Ending iteration early

Let's take a look at that `while` loop we had earlier:

Expand Down Expand Up @@ -1426,7 +1426,7 @@ building our guessing game, but we need to know how to do one last thing first:
get input from the keyboard. You can't have a guessing game without the ability
to guess!

## Standard Input
# Standard Input

Getting input from the keyboard is pretty easy, but uses some things
we haven't seen before. Here's a simple program that reads some input,
Expand Down Expand Up @@ -1586,7 +1586,7 @@ here.
That's all you need to get basic input from the standard input! It's not too
complicated, but there are a number of small parts.

## Guessing Game
# Guessing Game

Okay! We've got the basics of Rust down. Let's write a bigger program.

Expand All @@ -1597,7 +1597,7 @@ Upon entering our guess, it will tell us if we're too low or too high. Once we
guess correctly, it will congratulate us, and print the number of guesses we've
taken to the screen. Sound good?

### Set up
## Set up

Let's set up a new project. Go to your projects directory, and make a new
directory for the project, as well as a `src` directory for our code:
Expand Down Expand Up @@ -1645,7 +1645,7 @@ Excellent! Open up your `src/guessing_game.rs` again. We'll be writing all of
our code in this file. We'll talk about multiple-file projects later on in the
guide.

### Processing a Guess
## Processing a Guess

Let's get to it! The first thing we need to do for our guessing game is
allow our player to input a guess. Put this in your `src/guessing_game.rs`:
Expand Down Expand Up @@ -1674,7 +1674,7 @@ user to input a guess, get their input, and then print it out.
Because we talked about this in the section on standard I/O, I won't go into
more details here. If you need a refresher, go re-read that section.

### Generating a secret number
## Generating a secret number

Next, we need to generate a secret number. To do that, we need to use Rust's
random number generation, which we haven't talked about yet. Rust includes a
Expand Down Expand Up @@ -1845,7 +1845,7 @@ You guessed: 3

Great! Next up: let's compare our guess to the secret guess.

### Comparing guesses
## Comparing guesses

If you remember, earlier in the tutorial, we made a `cmp` function that compared
two numbers. Let's add that in, along with a `match` statement to compare the
Expand Down Expand Up @@ -2194,7 +2194,7 @@ the error messages help guide you towards the correct types.
Now we've got most of the game working, but we can only make one guess. Let's
change that by adding loops!

### Looping
## Looping

As we already discussed, the `loop` key word gives us an infinite loop. So
let's add that in:
Expand Down Expand Up @@ -2455,7 +2455,7 @@ fn cmp(a: uint, b: uint) -> Ordering {
}
```

### Complete!
## Complete!

At this point, you have successfully built the Guessing Game! Congratulations!

Expand All @@ -2467,36 +2467,36 @@ rest of your Rust education.
Now that you're an expert at the basics, it's time to learn about some of
Rust's more unique features.

## iterators
# iterators

## Lambdas
# Lambdas

## Testing
# Testing

attributes

stability markers

## Crates and Modules
# Crates and Modules

visibility


## Generics
# Generics

## Traits
# Traits

## Operators and built-in Traits
# Operators and built-in Traits

## Ownership and Lifetimes
# Ownership and Lifetimes

Move vs. Copy

Allocation

## Tasks
# Tasks

## Macros
# Macros

## Unsafe
# Unsafe