3 ms·
> Format strings can only capture plain identifiers, not arbitrary paths or expressions. Why?
by edflsafoiewq 5y ago
> Format strings can only capture plain identifiers, not arbitrary paths or expressions.
Why?
- pornel 5y agoBecause arbitrary expressions open a pandora box that complicates everything touching them. For example, expressions can be strings, so now you have strings inside strings, and the strings may even contain further levels of nested formatting strings. This would make correct tokenization of Rust quite difficult, and out of reach of most syntax highlighting tools. So the next question is why not allow only some "simple" expressions. It would require teaching users which expressions are allowed and which aren't. The rule that only a single identifier is allowed is both simple to parse, and simple to teach.
- dataangel 5y agoYou can have nested quotes already, arbitrarily many levels deep.
- edflsafoiewq 5y agoIt's hardly a rare feature. Everything from C# to JS has it these days, so I think "out of reach of most syntax highlighting tools" might be overstating things a bit. It can't be that hard. You don't have to allow nested strings either; Python's f-strings don't, they always parse as a regular string too (well, you can use a 'single-quoted string' inside a "double-quoted f-string").
- epage 5y agoCan always lookup and check the RFC: https://rust-lang.github.io/rfcs/2795-format-args-implicit-identifiers.html#alternative-solution---interpolation https://rust-lang.github.io/rfcs/2795-format-args-implicit-i...