]> git.proxmox.com Git - rustc.git/blame - src/doc/reference/src/glossory.md
New upstream version 1.22.1+dfsg1
[rustc.git] / src / doc / reference / src / glossory.md
CommitLineData
3b2f2976
XL
1# Glossary
2
3### Abstract Syntax Tree
4
5An ‘abstract syntax tree’, or ‘AST’, is an intermediate representation of
6the structure of the program when the compiler is compiling it.
7
8### Arity
9
10Arity refers to the number of arguments a function or operation takes.
11For example, `(2, 3)` and `(4, 6)` have arity 2, and`(8, 2, 6)` has arity 3.
12
13### Array
14
15An array, sometimes also called a fixed-size array or an inline array, is a value
16describing a collection of elements, each selected by an index that can be computed
17at run time by the program. It occupies a contiguous region of memory.
18
19### Bound
20
21Bounds are constraints on a type or trait. For example, if a bound
22is placed on the argument a function takes, types passed to that function
23must abide by that constraint.
24
25### Combinator
26
27Combinators are higher-order functions that apply only functions and
28earlier defined combinators to provide a result from its arguments.
29They can be used to manage control flow in a modular fashion.
30
31### Dispatch
32
33Dispatch is the mechanism to determine which specific version of code is actually
34run when it involves polymorphism. Two major forms of dispatch are static dispatch and
35dynamic dispatch. While Rust favors static dispatch, it also supports dynamic dispatch
36through a mechanism called ‘trait objects’.
37
38### Dynamically Sized Type
39
40A dynamically sized type (DST) is a type without a statically known size or alignment.
41
42### Expression
43
44An expression is a combination of values, constants, variables, operators
45and functions that evaluate to a single value, with or without side-effects.
46
47For example, `2 + (3 * 4)` is an expression that returns the value 14.
48
49### Prelude
50
51Prelude, or The Rust Prelude, is a small collection of items - mostly traits - that are
52imported into very module of every crate. The traits in the prelude are pervasive.
53
54### Slice
55
56A slice is dynamically-sized view into a contiguous sequence, written as `[T]`.
57
58It is often seen in its borrowed forms, either mutable or shared. The shared
59slice type is `&[T]`, while the mutable slice type is `&mut [T]`, where `T` represents
60the element type.
61
62### Statement
63
64A statement is the smallest standalone element of a programming language
65that commands a computer to perform an action.
66
67### String literal
68
69A string literal is a string stored directly in the final binary, and so will be
70valid for the `'static` duration.
71
72Its type is `'static` duration borrowed string slice, `&'static str`.
73
74### String slice
75
76A string slice is the most primitive string type in Rust, written as `str`. It is
77often seen in its borrowed forms, either mutable or shared. The shared
78string slice type is `&str`, while the mutable string slice type is `&mut str`.
79
80Strings slices are always valid UTF-8.
81
82### Trait
83
84A trait is a language item that is used for describing the functionalities a type must provide.
85It allow a type to make certain promises about its behavior.
86
87Generic functions and generic structs can exploit traits to constrain, or bound, the types they accept.