char::from_u32(@Rust)

Beginning Rustの「基本データ」の第6章に0~255までのu8形式の整数を文字表示できる整数の範囲から表示するのに、以下のようなコードが出てきますが、

fn main() {
    for n in 32..127 {
        println!("{}: [{}]", n, n as u8 as char);
    }
    for n in 160..256 {
        println!("{}: [{}]", n, n as u8 as char);
    }
}

ここで、

n as u8 as char

の代わりに、

どの数(u8以外)でも一文字に変換したいときには、char::from_u32()を使えとあって、それを使うと以下のようなコードになります。

fn main() {
    for n in 32..127 {
        println!("{}: [{}]", n, char::from_u32(n).unwrap());
    }
    for n in 160..256 {
        println!("{}: [{}]", n, n as u8 as char);
    }
}

char::from_u32()関数の解説は、

https://doc.rust-lang.org/core/primitive.char.html#method.from_u32

にあるように戻りの形はSome()なので、中身を取り出すためにunwrap()を使っています。オリジナルよりもこの方が見やすいように思います、処理速度は遅くなりそうですが。

 

admin

カテゴリーRust