---
# System prepended metadata

title: Reserved prefixes

---

# Reserved prefixes

Current status: 

* [RFC #3101](https://github.com/rust-lang/rfcs/pull/3101) is awaiting a checkbox
* but some questions need to be resolved

Open questions:

* Error in lexer or not?
    * If so:
        * Existing DSLs that peek at whitespace will break, e.g., Mara's python procedural macro, which relies on `f"..."`
    * If not:
        * Will change from 2 tokens to 1, but we can migrate that change
        * People can update their procedural macros accordingly to cope with either variety
        * However, we have to answer some questions
            * `b"abc"` errors for things that are not valid byte strings
                * Q: example?
            * raw strings `r""` and `r#"..."#` are well known to the lexer
                * Q: do they ever issue *errors*?
                * Q: do they generate strings differently in any way *other* than permitting embedded quotes with the `#` prefix and suffix?
                    * Answer: `r"fo\"` treats the `\` as a regular character, I believe, not an escape
            * so do we do this with any other prefixes or suffixes?
                * e.g., `br"..."` is permitted today
                * what about `bfr`? `rb`?
* Options
    * just do `ident # ident`
        * but we want `f#`!
    * just do `ident # ident` and reserve `f#`
        * but that's arbitrary
    * error in tokenizer
        * but existing crates break and can't be truly migrated
    * error in tokenizer but not for `f#` or some other specific cases
        * we do have to come up with sensible rules for `f#` then, but that seems plausible
        * how do we know we have the right set?
    * tokenize all strings but tokenize those ending in `r` as raw strings
        * this follows the precedent of `br"..."`
        * one catch: `b".."` enforces some conditions in lexer now, we'd probably want to change that
