@@ -13,16 +13,16 @@ provides three kinds of material:
13
13
- Appendix chapters providing rationale and references to languages that
14
14
influenced the design.
15
15
16
- This document does not serve as a tutorial introduction to the
16
+ This document does not serve as an introduction to the
17
17
language. Background familiarity with the language is assumed. A separate
18
- [ tutorial ] document is available to help acquire such background familiarity.
18
+ [ guide ] is available to help acquire such background familiarity.
19
19
20
20
This document also does not serve as a reference to the [ standard]
21
21
library included in the language distribution. Those libraries are
22
22
documented separately by extracting documentation attributes from their
23
23
source code.
24
24
25
- [ tutorial ] : tutorial .html
25
+ [ guide ] : guide .html
26
26
[ standard ] : std/index.html
27
27
28
28
## Disclaimer
@@ -349,7 +349,7 @@ enclosed within two `U+0022` (double-quote) characters,
349
349
with the exception of ` U+0022 ` itself,
350
350
which must be _ escaped_ by a preceding ` U+005C ` character (` \ ` ),
351
351
or a _ raw byte string literal_ .
352
- It is equivalent to a ` &'static [u8] ` borrowed vector of unsigned 8-bit integers.
352
+ It is equivalent to a ` &'static [u8] ` borrowed array of unsigned 8-bit integers.
353
353
354
354
Some additional _ escapes_ are available in either byte or non-raw byte string
355
355
literals. An escape starts with a ` U+005C ` (` \ ` ) and continues with one of
@@ -2555,6 +2555,8 @@ The currently implemented features of the reference compiler are:
2555
2555
which is considered wildly unsafe and will be
2556
2556
obsoleted by language improvements.
2557
2557
2558
+ * ` tuple_indexing ` - Allows use of tuple indexing (expressions like ` expr.0 ` )
2559
+
2558
2560
If a feature is promoted to a language feature, then all existing programs will
2559
2561
start to receive compilation warnings about #[ feature] directives which enabled
2560
2562
the new feature (because the directive is no longer necessary). However, if
@@ -2809,16 +2811,17 @@ When the type providing the field inherits mutabilty, it can be [assigned](#assi
2809
2811
Also, if the type of the expression to the left of the dot is a pointer,
2810
2812
it is automatically dereferenced to make the field access possible.
2811
2813
2812
- ### Vector expressions
2814
+ ### Array expressions
2813
2815
2814
2816
~~~~ {.ebnf .gram}
2815
- vec_expr : '[' "mut" ? vec_elems? ']' ;
2817
+ array_expr : '[' "mut" ? vec_elems? ']' ;
2816
2818
2817
- vec_elems : [expr [',' expr]*] | [expr ',' ".." expr] ;
2819
+ array_elems : [expr [',' expr]*] | [expr ',' ".." expr] ;
2818
2820
~~~~
2819
2821
2820
- A [ _ vector_ ] ( #vector-types ) _ expression_ is written by enclosing zero or
2821
- more comma-separated expressions of uniform type in square brackets.
2822
+ An [ array] ( #vector,-array,-and-slice-types ) _ expression_ is written by
2823
+ enclosing zero or more comma-separated expressions of uniform type in square
2824
+ brackets.
2822
2825
2823
2826
In the ` [expr ',' ".." expr] ` form, the expression after the ` ".." `
2824
2827
must be a constant expression that can be evaluated at compile time, such
@@ -2827,7 +2830,7 @@ as a [literal](#literals) or a [static item](#static-items).
2827
2830
~~~~
2828
2831
[1i, 2, 3, 4];
2829
2832
["a", "b", "c", "d"];
2830
- [0i, ..128]; // vector with 128 zeros
2833
+ [0i, ..128]; // array with 128 zeros
2831
2834
[0u8, 0u8, 0u8, 0u8];
2832
2835
~~~~
2833
2836
@@ -2837,9 +2840,9 @@ as a [literal](#literals) or a [static item](#static-items).
2837
2840
idx_expr : expr '[' expr ']' ;
2838
2841
~~~~
2839
2842
2840
- [ Vector ] ( #vector-types ) -typed expressions can be indexed by writing a
2843
+ [ Array ] ( #vector,-array,-and-slice -types ) -typed expressions can be indexed by writing a
2841
2844
square-bracket-enclosed expression (the index) after them. When the
2842
- vector is mutable, the resulting [ lvalue] ( #lvalues,-rvalues-and-temporaries ) can be assigned to.
2845
+ array is mutable, the resulting [ lvalue] ( #lvalues,-rvalues-and-temporaries ) can be assigned to.
2843
2846
2844
2847
Indices are zero-based, and may be of any integral type. Vector access
2845
2848
is bounds-checked at run-time. When the check fails, it will put the
@@ -2900,7 +2903,7 @@ This means that arithmetic operators can be overridden for user-defined types.
2900
2903
The default meaning of the operators on standard types is given here.
2901
2904
2902
2905
* ` + `
2903
- : Addition and vector /string concatenation.
2906
+ : Addition and array /string concatenation.
2904
2907
Calls the ` add ` method on the ` std::ops::Add ` trait.
2905
2908
* ` - `
2906
2909
: Subtraction.
@@ -3203,7 +3206,7 @@ for_expr : "for" pat "in" no_struct_literal_expr '{' block '}' ;
3203
3206
A ` for ` expression is a syntactic construct for looping over elements
3204
3207
provided by an implementation of ` std::iter::Iterator ` .
3205
3208
3206
- An example of a for loop over the contents of a vector :
3209
+ An example of a for loop over the contents of an array :
3207
3210
3208
3211
~~~~
3209
3212
# type Foo = int;
@@ -3261,7 +3264,7 @@ match_pat : pat [ '|' pat ] * [ "if" expr ] ? ;
3261
3264
3262
3265
A ` match ` expression branches on a * pattern* . The exact form of matching that
3263
3266
occurs depends on the pattern. Patterns consist of some combination of
3264
- literals, destructured vectors or enum constructors, structures and
3267
+ literals, destructured arrays or enum constructors, structures and
3265
3268
tuples, variable binding specifications, wildcards (` .. ` ), and placeholders
3266
3269
(` _ ` ). A ` match ` expression has a * head expression* , which is the value to
3267
3270
compare to the patterns. The type of the patterns must equal the type of the
@@ -3290,11 +3293,11 @@ between `_` and `..` is that the pattern `C(_)` is only type-correct if `C` has
3290
3293
exactly one argument, while the pattern ` C(..) ` is type-correct for any enum
3291
3294
variant ` C ` , regardless of how many arguments ` C ` has.
3292
3295
3293
- Used inside a vector pattern, ` .. ` stands for any number of elements, when the
3296
+ Used inside a array pattern, ` .. ` stands for any number of elements, when the
3294
3297
` advanced_slice_patterns ` feature gate is turned on. This wildcard can be used
3295
- at most once for a given vector , which implies that it cannot be used to
3298
+ at most once for a given array , which implies that it cannot be used to
3296
3299
specifically match elements that are at an unknown distance from both ends of a
3297
- vector , like ` [.., 42, ..] ` . If followed by a variable name, it will bind the
3300
+ array , like ` [.., 42, ..] ` . If followed by a variable name, it will bind the
3298
3301
corresponding slice to the variable. Example:
3299
3302
3300
3303
~~~~
@@ -3427,7 +3430,7 @@ let message = match x {
3427
3430
~~~~
3428
3431
3429
3432
Range patterns only work on scalar types
3430
- (like integers and characters; not like vectors and structs, which have sub-components).
3433
+ (like integers and characters; not like arrays and structs, which have sub-components).
3431
3434
A range pattern may not be a sub-range of another range pattern inside the same ` match ` .
3432
3435
3433
3436
Finally, match patterns can accept * pattern guards* to further refine the
@@ -3535,10 +3538,10 @@ http://www.unicode.org/glossary/#unicode_scalar_value)
3535
3538
(ie. a code point that is not a surrogate),
3536
3539
represented as a 32-bit unsigned word in the 0x0000 to 0xD7FF
3537
3540
or 0xE000 to 0x10FFFF range.
3538
- A ` [char] ` vector is effectively an UCS-4 / UTF-32 string.
3541
+ A ` [char] ` array is effectively an UCS-4 / UTF-32 string.
3539
3542
3540
3543
A value of type ` str ` is a Unicode string,
3541
- represented as a vector of 8-bit unsigned bytes holding a sequence of UTF-8 codepoints.
3544
+ represented as a array of 8-bit unsigned bytes holding a sequence of UTF-8 codepoints.
3542
3545
Since ` str ` is of unknown size, it is not a _ first class_ type,
3543
3546
but can only be instantiated through a pointer type,
3544
3547
such as ` &str ` or ` String ` .
@@ -3649,7 +3652,7 @@ Such recursion has restrictions:
3649
3652
3650
3653
* Recursive types must include a nominal type in the recursion
3651
3654
(not mere [ type definitions] ( #type-definitions ) ,
3652
- or other structural types such as [ vectors ] ( #vector-types ) or [ tuples] ( #tuple-types ) ).
3655
+ or other structural types such as [ arrays ] ( #vector,-array,-and-slice -types ) or [ tuples] ( #tuple-types ) ).
3653
3656
* A recursive ` enum ` item must have at least one non-recursive constructor
3654
3657
(in order to give the recursion a basis case).
3655
3658
* The size of a recursive type must be finite;
@@ -4153,7 +4156,7 @@ heap data.
4153
4156
### Built in types
4154
4157
4155
4158
The runtime provides C and Rust code to assist with various built-in types,
4156
- such as vectors , strings, and the low level communication system (ports,
4159
+ such as arrays , strings, and the low level communication system (ports,
4157
4160
channels, tasks).
4158
4161
4159
4162
Support for other built-in types such as simple types, tuples and
@@ -4172,7 +4175,7 @@ communication facilities.
4172
4175
The Rust compiler supports various methods to link crates together both
4173
4176
statically and dynamically. This section will explore the various methods to
4174
4177
link Rust crates together, and more information about native libraries can be
4175
- found in the [ ffi tutorial ] [ ffi ] .
4178
+ found in the [ ffi guide ] [ ffi ] .
4176
4179
4177
4180
In one session of compilation, the compiler can generate multiple artifacts
4178
4181
through the usage of either command line flags or the ` crate_type ` attribute.
0 commit comments