Rust: コードポイントから文字を生成する

from_u32 を使う。

use std::char::from_u32;

fn main
() {
    println
!("{}", from_u32(0x3042).unwrap());
}

Unicode で定義されるすべての文字を表示してみよう。

use std::char::from_u32;

fn main
() {

   
for cp in range(0u32, 0x110000) {

       
if 0xD7FF < cp && cp < 0xE000 {
           
continue;
       
}
   
       
print!("U+");

       
if cp < 0x1000 {
            let hex
= format!("{:X}", cp);
           
print!("{}", "0".repeat(4 - hex.len()));
       
}

       
print!("{:X} ", cp);
       
print!("{} ", from_u32(cp).unwrap());
   
}
   
    println
!("");
}

逆に文字からコードポイントを求めてみよう。

fn main() {
    let s
= "あ";
    println
!("{:X}", s.char_at(0) as u32);
}

4桁と8桁の Unicode エスケープシーケンスが使える。

println!("\U00020BB7\u91CE\u5BB6");

文字から Unicode エスケープシーケンスを表示するには escape_unicode メソッドを使う。

fn main() {
    let str
= "あいうえお";

    println
!("{}", str.escape_unicode());

   
for c in str.chars() {
        c
.escape_unicode(|b| {
           
print!("{}", b);
       
});
       
print!(" ");
   
}

    println
!("");
}