青少年JS開発者が学ぶRust-(2)


最初のアイテム


最初のコードの解析

use std::io;

fn main () {
    println!("숫자를 맞혀봅시다!");

    println!("정답이라고 생각하는 숫자를 입력하세요. ");

    let mut guess = String::new();
    io::stdin().read_line(&mut guess).expect("입력한 값을 읽지 못했습니다.");
    
    println!("입력한 값: {}", guess);
}
I/O用io(input/output)ライブラリのインポートioライブラリは、stdという標準ライブラリに含まれています.let mut guess = String::new()を見て
まず、デフォルトではrust変数は可変ではありません.
ただし、mutキーワードを使用して変更可能な変数を生成String::new() Stringタイプの新しいインスタンスの作成
そのインスタンスを推測変数にバインドする(newはStringの方法)io::stdin().read_line(&mut guess).expect("입력~~.") ioの方法stdinを使用して、ユーザの入力値を読み取ることができるようになった.
ここでは&mut guessを参照し、データをコピーすることなくアクセスできる機能を提供します.
ポインタのような概念ですが、4章では再処理して、その時になってから勉強しましょう.expectはエラー処理方法で、使わないと警告が少なくなります.
△ラスターは私に間違いを丁寧に処理させた...

整数の生成


rustは標準的な乱順生成機能を提供しない.
randというライブラリは1つのみ提供されます(後でcrateと呼びます)
クリートを使う前に、Cargo.Tomlでの依存関係の変更
私は糸addに少し慣れているので、手書きで依存したくない.
このリンクを参照して貨物の取り付けを行った.
ただ.
特定のライブラリバージョンが必要な場合は、バージョンを記入する必要があります.
バージョンの作成方法と互換性はSoledityと似ています.
詳しい使い方は以下の通りです。
問題が発生!
本ではrand crate 0.6.1版を使用し、cargo installにインストールされています.
最新バージョンの0.8.4がインストールされています.
したがって、メソッドのパラメータの数が異なるため、エラーが発生し、ライブラリの表示と修復が必要になります.

cargo doc --open


この場合、もちろんGoogleで検索できますが、端末に上記のコマンドを入力すると、
現在のプロジェクトで使用しているライブラリのドキュメントを整理し、Webページとして表示します.
Googleも良いのですが、この方法を一度にまとめて展示すると気持ち良さそうです.
たとえば、rand::thread_rng().gen_rangeメソッドの変更後にエラーが発生しました.
この場合、検索ウィンドウでメソッドを直接検索し、次のように使用方法を検証できます.

最終コード

use std::io;
use rand::Rng;
use std::cmp::Ordering;

fn main () {
    let secret_number = rand::thread_rng().gen_range(1..101);
    let mut count = 0;

    loop {
        count += 1;
        println!("숫자를 맞춰보세요! ({}번째 시도)", count);

        let mut guess = String::new();
        io::stdin().read_line(&mut guess).expect("숫자를 입력하세요!");

        let guess: u32 = match guess.trim().parse() {
            Ok(num) => num,
            Err(_) => continue,
        };

        match guess.cmp(&secret_number) {
            Ordering::Less => println!("입력한 숫자가 작습니다! \n"),
            Ordering::Greater => println!("입력한 숫자가 큽니다! \n"),
            Ordering::Equal => {
                println!("정답!");
                break;
            },
        }
    }
}
本の中のコードはいくつかの特色を増やした.