blob: f4d900c924ef3856961a6e5eed9613dc6f6283c6 [file] [log] [blame] [view]
r[expr.path]
# Path expressions
r[expr.path.syntax]
```grammar,expressions
PathExpression ->
PathInExpression
| QualifiedPathInExpression
```
r[expr.path.intro]
A [path] used as an expression context denotes either a local variable or an item.
r[expr.path.place]
Path expressions that resolve to local or static variables are [place expressions], other paths are [value expressions].
r[expr.path.safety]
Using a [`static mut`] variable requires an [`unsafe` block].
```rust
# mod globals {
# pub static STATIC_VAR: i32 = 5;
# pub static mut STATIC_MUT_VAR: i32 = 7;
# }
# let local_var = 3;
local_var;
globals::STATIC_VAR;
unsafe { globals::STATIC_MUT_VAR };
let some_constructor = Some::<i32>;
let push_integer = Vec::<i32>::push;
let slice_reverse = <[i32]>::reverse;
```
r[expr.path.const]
Evaluation of associated constants is handled the same way as [`const` blocks].
[place expressions]: ../expressions.md#place-expressions-and-value-expressions
[value expressions]: ../expressions.md#place-expressions-and-value-expressions
[path]: ../paths.md
[`static mut`]: ../items/static-items.md#mutable-statics
[`unsafe` block]: block-expr.md#unsafe-blocks
[`const` blocks]: block-expr.md#const-blocks