Rust チュートリアル 第 1 章 - Rust を理解する


序文

このシリーズのチュートリアル カタログは、ここで表示できます: Rust チュートリアル カタログ

近年、非常に人気のあるgo言語など、新しい言語が登場していますが、C++と比較すると、go言語は確かに非常に単純です

そのため、特に go 言語に特化したコラム チュートリアル記事を書く予定はなく、C/C++ の習熟度に関する実践的な紹介コラムで1 つの章を使って go 言語を紹介しただけです。
ここに画像の説明を挿入

新興言語としてrust、go とは異なります。なぜなら、その目標は、システム レベルの開発をベンチマークすること、つまり、何十年にもわたって垂直および水平プログラミングの世界で 2 つの兄貴分である C と C++ の地位を揺るがそうとすることだからです。

たとえば、最も一般的に使用されているwindowsシステムは C/C++ 言語で開発されているため、C++ を使用して VS で win API 関数を非常に便利に呼び出すことができます。

そして同じように、最下層が関与すればするほど、より多くの詳細を制御する必要があります。単純な構文、便利なパッケージ管理、安全性と信頼性などの優れた機能を通じて際立たせようとするこの錆びた言語でさえ、例外ありませ

数日間勉強した後、この言語の複雑さを紹介する一連のコラム記事を書けることを知りました。

注意:システムレベルの開発言語として、Rust は C や C++ よりも習得が容易ではありませんが、一度習得すると、一連のプログラムを迅速、効率的かつ安全に開発できます。これは、C や C++ よりもはるかに便利であることは間違いありません。その言語を学ぶ必要があるかどうかを判断します

現在、サビ語の最大の欠点は、誕生から 10 年以上しか経っていないため、現在の生態が完全ではないことかもしれません。

たとえば、Rust を使用して GUI プログラムを作成する場合、公式の GUI ライブラリがまだ起動されていないため、非常に面倒です。

Rustもこの問題を認識しており、C言語のライブラリを束ねるパッケージを数多く提供している. つまり、C言語で開発できるものであれば、基本的にRust言語で開発できる. !

たとえば、Cで開発されたFLTKやGTKなどのGUIライブラリをrustでバインドしてGUIプログラムを開発したり、もちろんeguiやicedなど開発中のライブラリもあります。

Rust がもたらすコードの安全性と便利な開発は、C 言語に匹敵するものではありません。そのため、Rust エコロジーの継続的な改善により、数年以内に C/C++ のシェアの大部分が置き換えられると予測しています。

Windows、Linux、Mac の 3 大オペレーティング システムと、さまざまなオープン ソース ライブラリが Rust 言語で書き直されない限り、C/C++ を完全に置き換えることは現実的ではありません。書き直したい、すぐに書き直せるので、長い間 (20 年か 30 年か?) C/C++ プログラミング言語は、プログラミングの世界で揺るぎない地位を維持しているはずです。

そのため、この記事とこのコラムの記事があります。これは、私のC/C++ の実践的な習得のベンチマークとなる別のチュートリアル記事です。

初心者でもすぐに Rust を使い始めたり、簡単なソフトウェアの開発を始めたり、大規模で興味深い実用的なプロジェクトを書いたりできることを書こうとしています。

C/C++ 言語をある程度理解していることが最善です。そうでないと、Rust の多くの概念を理解できない可能性があります。

1.Rustの紹介

百度百科事典を参照してください。

Rust 言語は 2006 年に Mozilla の従業員である Graydon Hoare のプライベート プロジェクトとして登場し、Mozilla は 2009 年にプロジェクトのスポンサーを開始しました。最初のバージョン管理された Rust コンパイラは 2012 年 1 月にリリースされました。Rust 1.0 は最初の安定版リリースで、2015 年 5 月 15 日にリリースされました。

Rust の安定版が一般公開されたのは 2015 年で、まだ 10 年前のことですが、現在の Rust 言語に対するプログラマーの一般的な評価によると、今 Rust を学べば、近い将来、この言語を楽しむ機会が得られる可能性があります。

例えば、Rust関連の開発職はますます増えているかもしれませんし、Rustを学んでいるプログラマーの数はC/C++に比べてまだ微々たるものであり、供給が需要を上回る状況が生じるかもしれません.供給不足は、Rustプログラマーの給与が年々上昇するということです

具体的には、Rust開発者にどのような利便性をもたらすのでしょうか?

主に以下の点があります。

  • メモリの安全性:

Rust でのすべてのメモリ アクセスは、コンパイラによって厳密にチェックされ、ヌル ポインター例外やデータ競合などの問題なく実行されます。これは、Rust コードがより信頼性が高く、一般的なセキュリティ ホールから安全であることを意味します。

C言語はポインタやメモリの問題を気にする必要があることが多く、特に大規模なプロジェクトでは、さまざまなバグが非常に発生しやすい

  • 効率的なパフォーマンス:

Rust は C や C++ に匹敵するパフォーマンスを持ち、スマート ポインター、クロージャー、パターン マッチングなど、最新の言語の機能と設計概念を採用しています。これにより、Rust は、高性能で低レイテンシーのシステムレベルのアプリケーションとライブラリを作成するのに適しています。

  • 同時実行:

Rust の所有権システムと借用規則により、マルチスレッド環境でも効率的で信頼性の高いスレッドセーフなコードを簡単に記述できます。C/C++ では、自分で制御する必要があります

  • コミュニティ サポート:

Rust には活発なコミュニティがあり、開発効率を大幅に向上させることができる多くのオープン ソース ライブラリ、ツール、およびフレームワークを提供しています。C/C++ を学んでいる人はたくさんいますが、誰もがコミュニケーションできる公式で活発なコミュニティはほとんどなく、それぞれが独自のことを行っています。

  • 統一されたパッケージ管理

C/C++ で最も批判されているのはパッケージ管理です. パッケージを使用する場合は、自分でダウンロード、インストール、構成などを行う必要がありますが、Rust は統一されたパッケージ管理プログラムを直接提供するため、パッケージを 1 つ作成するだけで済みます。ラインコードを使用すると、必要なものすべてを自動的にダウンロードして構成でき、対応するドキュメントも提供されるため、非常に便利です。

要約すると、Rust の利点がわかります。

Python 言語が人気を博している理由はたくさんありますが、大きな理由の 1 つは、Python にはpipパッケージを簡単にダウンロードできる統合パッケージ管理プログラムがあることです。

そして、Rust を学ぶと、比較的低レベルの開発者でも、この便利さを楽しむことができます!

これは、C/C++ の学習には想像を絶するものです (現在、vcpkg非常に優れたパッケージ管理ライブラリがありますが、結局は標準委員会によって開始されたのではなく、Microsoft が率いるオープン ソース プロジェクトであり、方法がわからない場合は、科学的にインターネットをサーフィンするには、中国はほとんど利用できなくなります)

2. Rust コンパイラをインストールする

C/C++ と同様に、Rust もコンパイル済み言語です。つまり、Rust コードは、実行する前にバイナリ プログラムにコンパイルする必要があります。

たとえば、windowシステムで最もよく目にする.exeバイナリ

Python はコンパイルなしのインタープリター言語です。Python インタープリターがあれば、コードを 1 行ずつ解釈してから実行できます。これも Python の速度に影響を与える主な理由です。

通常、ブラウザーで Rust を直接検索すると、最初に表示されるのは Rust の公式 Web サイトです。

ここに画像の説明を挿入
次のタグ: Rust の学習、コミュニティ、インストール、ブログなど、クリックして見ることができます

公式ウェブサイトのアドレスもここに記載します。クリックして直接表示できます:Rust公式ウェブサイト

次に、[今すぐ
ここに画像の説明を挿入

次に、Rust インストーラーをダウンロードします (現在、通常は 64 ビットのコンピューターなので、2 つ目のコンピューターを選択してください)。

ここに画像の説明を挿入
ダウンロード後、クリックしてプログラムを実行し、インストールが完了するまで待ちます

最初に VS2022 をインストールしたので、何もインストールするように求められませんでした.VS がインストールされていない場合は、上記で提案されている Microsoft C++ 生成ツールをインストールするように求められる場合があります。

インストールが完了したら、次のコマンドを実行します。cargo --version
ここに画像の説明を挿入

バージョンが印刷できれば、インストールは成功です (win+Rショートカット キーを入力しcmd、Enter キーを押してコンソールに入ります)。

初めて使うときは少し戸惑うかもしれませんが、当然インストールされているのでRust、ここでのコマンドは何ですかCargo

これは公式ウェブサイトで見ることができます:

ここに画像の説明を挿入
つまり、Cargo は Rust 言語のパッケージ管理ソフトウェアで、後で Rust を開発するときは、基本的にこのコマンドを使用します。

3. 最初の Rust プログラム

cargo new projectNameコマンドでRustプロジェクトを作成できます

たとえば、次のように実行します。cargo new hello-world

ここに画像の説明を挿入
次に、現在のディレクトリにプロジェクト フォルダーが生成されます。
ここに画像の説明を挿入

  • .git: これは隠しフォルダで、Git ソフトウェアがバージョン管理を実装するために使用されます. 通常、Rust の学習では必要ないため、心配する必要はありません
  • src: ここはコードが保存される場所で、私たちが書いた錆のコードは将来このフォルダに置かれます
  • .gitignore: これは git でも使用されます. ファイルの種類を無視するために使用され、バージョン管理を実行しません. 通常、これも無視されます.

注:の一部でgitはありませんrustが、バージョン管理に git を使用する有名な github など、すべての言語に共通のバージョン管理ツールです。

  • Cargo.toml: このファイルは非常に重要です.rustcargoパッケージ管理プログラムとして, プロジェクトで必要な依存ライブラリを知るためにこのファイルを使用します.

メモ帳で開くと、次のように表示されます。

ここに画像の説明を挿入

使いたいライブラリは[dependencies]項目の直下に書くだけで、あとで詳しく紹介します

次に、srcrust コードが保存されているディレクトリに移動します。

ここに画像の説明を挿入

デフォルトでファイルがありmain.rs、サフィックスはの略.rsですrust。このファイルはプロジェクトのエントリ ファイルとなるため、rust プロジェクトでは不可欠です。

このファイルの名前は変更しないでください。そうしないと、後続のコンパイルが直接失敗します!

同様に、メモ帳で開くこともできます:
ここに画像の説明を挿入
ここに関数があります:

  • fn:rust のキーワードは のfunction省略形で、関数が続くことを意味します。

  • main: この関数の名前も変更できません! これはプログラムのエントリ関数であるため、プログラムはこの関数から順番に内部コードを実行します。

  • (): 前の関数名、 fn キーワード、および次の{}.fn name(){}

  • {}: 関数本体、つまり、この関数によって実行されるコード、たとえば、ここに入力される内容は、このprintln!("Hello, world!");文字列を出力することを意味します“hello world”

そのうちの 1 つprintln!はマクロで、文字列をコンソールに出力する手順を簡略化するために使用されます.C/C++、python、java などの言語を学習したことがある場合は、早期学習プロセスrustで関数として直接使用できます。printそれだけです。!その後にa が続くことに注意してください。()

また、ここでは、各ステートメントの末尾が使用されていることに注意してください;。使用されていない場合は、エラーが報告されます。

コンソールに戻り、このフォルダーに移動し、次のコードを実行して試してください。

コードを実行するコマンドは次のとおりです。cargo run

ここに画像の説明を挿入
Hello World!次に、正常に実行され、文字列が出力されることがわかります

C/C++ を学んだことがあれば、ここまでは会議よりも少し複雑であることがrustわかります. 結局、出力に必要なソース コード ファイルは 1 つだけですが、すぐに非常に多くのファイルが生成されました。出てきます。C/C++C/C++hello worldrust

しかしすぐに、特に後でプロジェクトを開発するときに、この錆の機能の利点を見つけるでしょう。

前に述べたように,rust はコンパイル済み言語なので,実行する前にバイナリにコンパイルされます.生成されたexeプログラムは次のディレクトリにあります:
ここに画像の説明を挿入
しかし,それを直接クリックしても動作しません. code 文字列を出力するコードを書いただけで、プログラムは出力後に終了するので、黒い影が点滅するだけです。後でこの問題を解決する方法を見つけます。

上記のコマンドは、cargo run現在のプロジェクトをコンパイルして実行することを意味します

実行するのではなく、コンパイルするだけの場合はどうすればよいですか?

次に、次のコマンドを使用できます。cargo build

デフォルトのビルドはDebugデバッグ可能なバージョンで、直観的には、生成される exe プログラムはわずかに大きくなります

Releaseコマンドを使用してバージョンをビルドすることもできます:cargo build --release直感的に、このコマンドによって生成される実行可能ファイルは小さくなります。

ここに画像の説明を挿入
それでも比較的大きいと思われる場合は、いくつかのツールを使用してさらに圧縮することができます。これにより、後で説明するように、数十 kb にすることができます。

ここに画像の説明を挿入

4. IDE 環境

以上のことから、メモ帳だけでも開発できることがわかりますが、面倒なので、VS のようなコードヒント付きの IDE 環境が必要です。これにより、開発効率が大幅に向上します。

しかし、Rust は比較的新しい言語であるため、現在のところ専用の IDE ソフトウェアはありません。

ただし、一部のエディタ用のプラグインをインストールすることで、錆びたコードを記述できる IDE 環境に組み込むことができます。

この一連のチュートリアルではVSCode、現在最も人気のあるエディターであるこのエディターを使用します。

公式 Web サイトにアクセスして、次のリンクからダウンロードできます: vs code

ここに画像の説明を挿入
ダウンロードしてインストールする適切なバージョンを選択できます。上の図の矢印は、私がインストールしたバージョンを示しています。x64 系统安装

しかし、実際には、各バージョンに大きな違いはなく、好みに依存します

注: ダウンロードが完了したら、次の手順を続行するためにコンピューターを再起動する必要がある場合があります。

コンソールでこのフォルダーに移動し、次のように入力します。code .

ここに画像の説明を挿入

このコード コマンドは、vs codeVSCode ソフトウェアがフォルダーを開くために提供されるコマンドです。

そして、すぐに続くのは.現在のディレクトリを指します。つまり、VScode で現在のディレクトリを開くことを意味します。

次に、rust プロジェクトのプロジェクト フォルダが VSCode で開かれていることがわかります。
ここに画像の説明を挿入
ただし、VScode は単なるエディタであるため、このエディタを IDE にするために ruby​​ プラグインもインストールする必要があり、方法は非常に簡単です。

左側のプラグイン オプションをクリックし、rust と入力して検索し、インストールしますrust-analyzer
ここに画像の説明を挿入

これでRust開発環境の設定は完了です

最初の数文字を入力すると、コード プロンプトが自動的にポップアップします。
ここに画像の説明を挿入
この時点では、Enterキーを押すコードが自動的に入力されます。

これで、コードを実行するのは非常に簡単になりました。メイン関数の上にあるボタンをクリックして直接実行するだけです。
ここに画像の説明を挿入
出力を確認できます。
ここに画像の説明を挿入

5. パッケージ管理を理解する

IDE を構成したら、rust の公式 Web サイトで提供されている例を試して、rust のパッケージ管理がいかに簡単かを確認してみましょう。

たとえば、端末に次のパターンを出力したいとします。

ここに画像の説明を挿入

ferris-saysこのライブラリはここで使用されます

最初に前述のCargo.tomlファイルにアクセスし、[dependencies]このライブラリをアイテムに追加します

[dependencies]
ferris-says = "0.2"

ここに画像の説明を挿入
保存後、Cargo buildコマンドを1回実行(vsコード下のターミナルで直接実行)

ここに画像の説明を挿入
ferris-saysCargo は自動的にこのライブラリの0.2バージョンを見つけ、ダウンロードしてコンパイルし、コードで直接使用できるようにします。

Cargo.lockまた、プロジェクト フォルダーに余分なファイルがあることに気付いたかもしれません。

このファイルは、現在のプロジェクトで使用されているすべてのライブラリと依存関係を記録するために使用されます. cargo によって自動的に管理されるので、心配する必要はありません.

コードに来て、このライブラリを使用しましょう

use ferris_says::say; // from the previous step
use std::io::{
    
    stdout, BufWriter};

fn main() {
    
    
    let stdout = stdout();
    let message = String::from("Hello fellow Rustaceans!");
    let width = message.chars().count();

    let mut writer = BufWriter::new(stdout.lock());
    say(message.as_bytes(), width, &mut writer).unwrap();
}

一見、少し複雑に感じるかも?

この小さなコードには多くの Rust の概念が含まれているため、当面はこのコードのロジックについては説明しません. このコードの文字列は自由に変更できます:"Hello fellow Rustaceans!"

次に、上記のコードを実行します。
ここに画像の説明を挿入
このパターンを正常に出力できます。

このライブラリのダウンロードとインストールの場所は、既定で現在のユーザー フォルダーの.Cargoフォルダーになります。

ここに画像の説明を挿入

6. まとめ

このチュートリアルシリーズの最初の章で、主にrustの特徴、インストール、プロジェクト構造、IDE環境設定、コード操作について紹介します。

主に、少し覚える必要がある次のコマンドがあります。

  • cargo new: 新しい錆プロジェクトを作る
  • cargo run : コードを直接実行する
  • cargo build : コードをコンパイルするだけで、実行しません。デフォルトのコンパイル済みバージョンはデバッグ バージョンです。
  • cargo build --release: リリース版にコンパイル

ライブラリをインストールするときは、cargo buildコマンドを直接使用することにも注意してください.プロジェクトをビルドするときに多くの依存ライブラリが見つかると、ダウンロードして自動的にコンパイルします.

次の章では、錆の基本的な構文を詳細に説明し始めます

おすすめ

転載: blog.csdn.net/weixin_50964512/article/details/130138973