Rustの勉強を始めたくなったのでChatGPTに教えてもらう

巷で噂になってからそこそこ経つプログラミング言語Rustについて本格的に勉強したくなったのでChatGPTを使って学ぼうと思う
AIをツールとして従えるための訓練という面もある(というかそっちがメイン)

Rustの特徴とかを知る

Q. Rustってどんなプログラミング言語

A.コンパイル言語で、実行速度が速く、メモリ使用量を制御でき、高い並列性を持ち、安全性が強化されている

事前にざっと眺めた公式ドキュメントで推されていたようなことが書いてある
こんな文章がパッと出てくるのはやっぱりすごい

Q. Rustはどんな場面で使われている?

A. OS, Webブラウザ, ゲームエンジンなど

OS: GoogleがKataOSなる組み込み向けOSを開発しているらしい
Webブラウザ: ご存じの通りFirefoxの現場で使われている
ゲームエンジン: BevyエンジンというのがRustで実装されているようだ

Rustを勉強するには何から始めたらいい?

A. 公式ドキュメントを読み、コードを書き、ライブラリを触って、コミュニティに参加し、プロジェクトに参加

思っていたよりスコープの広い話で驚いたが、やはり公式ドキュメントのチュートリアルを読むのが手っ取り早そうだ

Rustのチュートリアルを読む

言われた通りにチュートリアルを読んでみる
有志による公式ドキュメントの日本語訳版があったのでありがたく利用させてもらおう

doc.rust-jp.rs

このチュートリアルを10章までやってみて、ある程度Rustの文法等は理解できた

ChatGPTにコードを書いてもらう

まだ無からコードを書くのはしんどい程度の知識量なので一旦AIにお手本を書いてもらう
最終的にRustでスクレイピングしてみたいので、手始めにHTTPリクエストするコードを質問してみた

Q. RustでHTTP リクエストを送信するコードを書いてほしい

use std::collections::HashMap;
use std::io;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let resp = reqwest::get("https://httpbin.org/ip")
        .await?
        .json::<HashMap<String, String>>()
        .await?;
    println!("{:#?}", resp);
    Ok(())
}

reqwesttokioというクレートを使っているのでCargo.tomlを編集しておこう

[dependencies]
reqwest = { version = "0.11", features = ["json"] }
tokio = { version = "1", features = ["full"] }

このコードをコピペしてcargo runで実行すると確かにhttpbin.orgからのレスポンスを受け取れているようだ

おまけ


こんなポンコツに教わってたのかよ!