non_ascii_idents

The tracking issue for this feature is: #28979


The non_ascii_idents feature adds support for non-ASCII identifiers.

Examples


# #![allow(unused_variables)]
#![feature(non_ascii_idents)]

#fn main() {
const ε: f64 = 0.00001f64;
const Π: f64 = 3.14f64;
#}

Changes to the language reference

Lexer:
IDENTIFIER :
      XID_start XID_continue*
   | _ XID_continue+

An identifier is any nonempty Unicode string of the following form:

Either

Or

  • The first character is _
  • The identifier is more than one character, _ alone is not an identifier
  • The remaining characters have property XID_continue

that does not occur in the set of strict keywords.

Note: XID_start and XID_continue as character properties cover the character ranges used to form the more familiar C and Java language-family identifiers.