| 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 |