Introduction
1.
Hello World
❱
1.1.
Comments
1.2.
Formatted print
❱
1.2.1.
Debug
1.2.2.
Display
❱
1.2.2.1.
Testcase: List
1.2.3.
Formatting
2.
Primitives
❱
2.1.
Literals and operators
2.2.
Tuples
2.3.
Arrays and Slices
3.
Custom Types
❱
3.1.
Structures
3.2.
Enums
❱
3.2.1.
use
3.2.2.
C-like
3.2.3.
Testcase: linked-list
3.3.
constants
4.
Variable Bindings
❱
4.1.
Mutability
4.2.
Scope and Shadowing
4.3.
Declare first
4.4.
Freezing
5.
Types
❱
5.1.
Casting
5.2.
Literals
5.3.
Inference
5.4.
Aliasing
6.
Conversion
❱
6.1.
From and Into
6.2.
TryFrom and TryInto
6.3.
To and from Strings
7.
Expressions
8.
Flow of Control
❱
8.1.
if/else
8.2.
loop
❱
8.2.1.
Nesting and labels
8.2.2.
Returning from loops
8.3.
while
8.4.
for and range
8.5.
match
❱
8.5.1.
Destructuring
❱
8.5.1.1.
tuples
8.5.1.2.
arrays/slices
8.5.1.3.
enums
8.5.1.4.
pointers/ref
8.5.1.5.
structs
8.5.2.
Guards
8.5.3.
Binding
8.6.
if let
8.7.
let-else
8.8.
while let
9.
Functions
❱
9.1.
Methods
9.2.
Closures
❱
9.2.1.
Capturing
9.2.2.
As input parameters
9.2.3.
Type anonymity
9.2.4.
Input functions
9.2.5.
As output parameters
9.2.6.
Examples in std
❱
9.2.6.1.
Iterator::any
9.2.6.2.
Searching through iterators
9.3.
Higher Order Functions
9.4.
Diverging functions
10.
Modules
❱
10.1.
Visibility
10.2.
Struct visibility
10.3.
The use declaration
10.4.
super and self
10.5.
File hierarchy
11.
Crates
❱
11.1.
Creating a Library
11.2.
Using a Library
12.
Cargo
❱
12.1.
Dependencies
12.2.
Conventions
12.3.
Tests
12.4.
Build Scripts
13.
Attributes
❱
13.1.
dead_code
13.2.
Crates
13.3.
cfg
❱
13.3.1.
Custom
14.
Generics
❱
14.1.
Functions
14.2.
Implementation
14.3.
Traits
14.4.
Bounds
❱
14.4.1.
Testcase: empty bounds
14.5.
Multiple bounds
14.6.
Where clauses
14.7.
New Type Idiom
14.8.
Associated items
❱
14.8.1.
The Problem
14.8.2.
Associated types
14.9.
Phantom type parameters
❱
14.9.1.
Testcase: unit clarification
15.
Scoping rules
❱
15.1.
RAII
15.2.
Ownership and moves
❱
15.2.1.
Mutability
15.2.2.
Partial moves
15.3.
Borrowing
❱
15.3.1.
Mutability
15.3.2.
Aliasing
15.3.3.
The ref pattern
15.4.
Lifetimes
❱
15.4.1.
Explicit annotation
15.4.2.
Functions
15.4.3.
Methods
15.4.4.
Structs
15.4.5.
Traits
15.4.6.
Bounds
15.4.7.
Coercion
15.4.8.
Static
15.4.9.
Elision
16.
Traits
❱
16.1.
Derive
16.2.
Returning Traits with dyn
16.3.
Operator Overloading
16.4.
Drop
16.5.
Iterators
16.6.
impl Trait
16.7.
Clone
16.8.
Supertraits
16.9.
Disambiguating overlapping traits
17.
macro_rules!
❱
17.1.
Syntax
❱
17.1.1.
Designators
17.1.2.
Overload
17.1.3.
Repeat
17.2.
DRY (Don't Repeat Yourself)
17.3.
DSL (Domain Specific Languages)
17.4.
Variadics
18.
Error handling
❱
18.1.
panic
18.2.
abort & unwind
18.3.
Option & unwrap
❱
18.3.1.
Unpacking options with ?
18.3.2.
Combinators: map
18.3.3.
Combinators: and_then
18.3.4.
Defaults: or, or_else, get_or_insert, get_or_insert_with
18.4.
Result
❱
18.4.1.
map for Result
18.4.2.
aliases for Result
18.4.3.
Early returns
18.4.4.
Introducing ?
18.5.
Multiple error types
❱
18.5.1.
Pulling Results out of Options
18.5.2.
Defining an error type
18.5.3.
Boxing errors
18.5.4.
Other uses of ?
18.5.5.
Wrapping errors
18.6.
Iterating over Results
19.
Std library types
❱
19.1.
Box, stack and heap
19.2.
Vectors
19.3.
Strings
19.4.
Option
19.5.
Result
❱
19.5.1.
?
19.6.
panic!
19.7.
HashMap
❱
19.7.1.
Alternate/custom key types
19.7.2.
HashSet
19.8.
Rc
19.9.
Arc
20.
Std misc
❱
20.1.
Threads
❱
20.1.1.
Testcase: map-reduce
20.2.
Channels
20.3.
Path
20.4.
File I/O
❱
20.4.1.
open
20.4.2.
create
20.4.3.
read_lines
20.5.
Child processes
❱
20.5.1.
Pipes
20.5.2.
Wait
20.6.
Filesystem Operations
20.7.
Program arguments
❱
20.7.1.
Argument parsing
20.8.
Foreign Function Interface
21.
Testing
❱
21.1.
Unit testing
21.2.
Documentation testing
21.3.
Integration testing
21.4.
Dev-dependencies
22.
Unsafe Operations
❱
22.1.
Inline assembly
23.
Compatibility
❱
23.1.
Raw identifiers
24.
Meta
❱
24.1.
Documentation
24.2.
Playground
Light
Rust
Coal
Navy
Ayu
Rust By Example
English
日本語
Syntax
In following subsections, we will show how to define macros in Rust. There are three basic ideas:
Patterns and Designators
Overloading
Repetition