10
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Rust] 識別子に日本語を使う

Last updated at Posted at 2020-01-22

Rust では ASCII 以外の文字を含む識別子が 2020-01-22 現在 nightly で利用可能です. CJK 圏からの要望がないと永遠に安定化されない気がするので, みなさんこの機能を使ってフィードバックしてあげてください.

2021-06-22 追記 この機能は2021年6月17日にリリースされた Rust 1.53 で安定化されました. stable 版でも #![feature(non_ascii_idents)] なしで日本語識別子を使えます.

本論

現時点でこの機能を有効化するには #![feature(non_ascii_idents)] というアトリビュートをコードの冒頭で設定します. 例えば:

main.rs
#![feature(non_ascii_idents)]

fn main() {
    let  = 'あ';
    println!("{}", );
}

そして nightly でコンパイルします: cargo +nightly build など.

識別子について

unicode 識別子は Unicode Consortium 側で想定されていて, Rust では識別子としては次の 2 パターンが許されます (RFC または unstable book 参照).

  • 最初の文字が XID_start で, それ以降 XID_continue が続くもの.
  • 最初の文字がアンダースコア _ で, それ以降 XID_continue が 1 文字以上続くもの.

残念ながら絵文字は使えません. 日本語では句読点 , や括弧 , などは禁じられています. リンクを踏むと使用可能なコードポイントの一覧が見れます. また, 同一の見た目になるが複数の utf-8 表現が可能な識別子 (合成済み文字を含む場合など) は同一の識別子として取り扱われます.

議論

何に使うんだ, と思われるかもしれませんが, 例えば円周率を π に束縛したりとギリシャ文字を使うのが自然な変数にギリシャ文字を使えたり, 適切な識別子を英語で捻り出す (そしてわかりづらい識別子になり可読性が落ちる) 手間が省けたりと, 少し考えただけでもメリットがいろいろと思い付きます. もちろんデメリットもいろいろありますが. このあたりのことは既に詳しく論じている方がいるので, そちらをご覧ください.

参考文献

10
5
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?