【Rust】文字型、論理値型

1. 概要 

今回はRustの文字型、論理値型について学んでいきたいと思います。

2. 文字型

Rustの文字型は”(シングルクォート)で文字を囲んで定義します。

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

実行します。

cargo run

結果

   Compiling hello_rust v0.1.0 (<作業ディレクトリ>/hello_rust)
    Finished dev [unoptimized + debuginfo] target(s) in 0.46s
     Running `target/debug/hello_rust`
a

問題なく、出力できました。では、次のようにすると、どうでしょうか。

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

実行します。

cargo run

結果

   Compiling hello_rust v0.1.0 (<作業ディレクトリ>/hello_rust)
error: character literal may only contain one codepoint
 --> src/main.rs:2:13
  |
2 |     let s = 'abc';
  |             ^^^^^
  |
help: if you meant to write a `str` literal, use double quotes
  |
2 |     let s = "abc";
  |             ~~~~~

error: could not compile `hello_rust` due to previous error

文字型は文字を1つだけしか扱うことができないと言われました。もし’abc’と定義したいなら、””(ダブルクォート)で囲んで、文字列型で定義するように言われました。

文字をシングルクォートで囲むことで、文字型として宣言するのは、cやkotlinなどでも同様です。

3. 論理値型

Rustの論理値型はtrueとfalseを持っていて、他の言語と同様にif文やwhile文などの条件式に使われます。

fn main() {
    println!("年齢を入力してください。");

    // Stringオブジェクトを生成
    let mut s = String::new();

    // 標準入力
    std::io::stdin().read_line(&mut s).expect("入力エラー");

    // 入力された年齢をu8型にキャスト
    let age: u8 = s.trim().parse().unwrap();

    // 入力された年齢によって処理を分岐する
    // 18歳以上であればtrueで成人と出力
    // 18より下であればfalseで未成年と出力
    if age >= 18 {
        println!("成人");
    } else {
        println!("未成年")
    }
}

実行します。

cargo run

18と入力

   Compiling hello_rust v0.1.0 (<作業ディレクトリ>/hello_rust)
    Finished dev [unoptimized + debuginfo] target(s) in 0.47s
     Running `target/debug/hello_rust`
年齢を入力してください。
18

結果

   Compiling hello_rust v0.1.0 (<作業ディレクトリ>/hello_rust)
    Finished dev [unoptimized + debuginfo] target(s) in 0.47s
     Running `target/debug/hello_rust`
年齢を入力してください。
18

成人

次に17と入力

    Finished dev [unoptimized + debuginfo] target(s) in 0.00s
     Running `target/debug/hello_rust`
年齢を入力してください。
17

結果

    Finished dev [unoptimized + debuginfo] target(s) in 0.00s
     Running `target/debug/hello_rust`
年齢を入力してください。
17

未成年

使い方は他の言語とほとんど変わらないです。

4. まとめ

文字型も論理値型も他の言語とあまり変わらないので直感的にわかりやすかったですね。

標準入力やexcept、unwrapなども出てきましたが、これはまた今度やっていきたいと思ってます。

今回は、以上です。

5. 参考

https://qiita.com/deta-mamoru/items/d28e0539958f331f1fb8

投稿者プロフィール

OkawaRyouta
最新の投稿

関連記事

  1. 【Rust】Unsafe Rust

  2. 【Rust】変数、定数、シャドーイング

  3. 【Rust】列挙型

  4. 【Rust】文字列型

  5. 【Rust】所有権システム、所有権の移動

  6. 【Rust】タプル型、配列型

最近の記事

  1. AWS
  2. AWS
  3. AWS
  4. AWS
  5. AWS
  6. AWS
  7. AWS
  8. AWS

制作実績一覧

  1. Checkeys