[C++ から Rust へ: Rust の基本をマスターする]


第1章;序章

英語学習の媒体として Rust を選ぶ理由

Rust は、パフォーマンス、安全性、同時実行性 (并発行性) に重点を置いた最新のプログラミング言語です。その堅牢な (健壮的) 機能により、テクノロジー業界で大きな注目を集めています。Rust を学ぶことは、プログラミング スキルを向上させるだけでなく、英語を上達させる素晴らしい機会にもなります。この言語のドキュメントとコミュニティ サポートは主に英語で提供されており、言語を練習するための自然な環境を提供しています。

RustとC++の類似点と相違点

すでに C++ に習熟している場合は、Rust への移行は比較的スムーズです。どちらの言語も、強い型付け (强类型) や低レベルのメモリ制御 (底层内存制御) など、いくつかの共通パラダイム (范式) を共有しています。ただし、Rust をユニークなものにする重要な違いもあります。

メモリの安全性

Rust は、C++ で懸念されることが多いメモリ管理に関連する一般的なバグを排除することを目的としています。

所有

Rust の最も特徴的な機能の 1 つは、その所有権モデルです。これにより、プログラム内の各値には、その管理を担当する単一の「所有者」が確実に存在します。

不変性

デフォルトでは、Rust の変数は不変です。つまり、一度宣言すると変更することはできません。これは、可変性 (可变性) がデフォルトの動作である C++ とは対照的です。

コミュニティとエコシステム

Rust には活気のあるコミュニティがあり、ライブラリとツールのエコシステムが成長しており、その多くはオープンソースです。

これらの側面を探ることで、Rust についての理解が深まるだけでなく、テクノロジー業界で不可欠なさまざまな英語の用語やフレーズに出会うことができます。この二重の焦点により、Rust の学習はさまざまな面で価値のある経験になります。

次の章では、変数のバインディングと不変性から始めて、Rust の基本的な構文と機能を詳しく掘り下げていきます。

乞うご期待!

第 2 章: 変数のバインドと不変性

変数の宣言と初期化

Rust では、変数の宣言は簡単です。キーワードを使用してlet変数を宣言します。デフォルトでは、変数は不変です。つまり、変数は初期化されると変更できません。

let x = 5;

ここで、xは値 で初期化された不変変数です5

不変変数

不変変数とは、一度宣言すると変更できない変数です。これは Rust のデフォルトの動作であり、変数がデフォルトで変更可能である C++ のような言語とは異なります。

let y = 6;
// This will throw an error
y = 7;  

不変変数の値を変更しようとすると、yコンパイル エラーが発生します。

可変変数

値を変更できる変数が必要な場合は、mutキーワードを使用して可変として宣言できます。

let mut z = 8;
z = 9;  // This is allowed

ここで、zは可変変数であり、その値の変更が許可されています。

Variable Scope in Rust (作用域)

C++ と同様に、Rust の変数にはスコープがあり、これは変数にアクセスできるプログラム内の範囲です。

{
    
    
    let a = 10;  // 'a' is accessible only within this block
}
// 'a' is not accessible here

上記の例では、変数はa宣言されているブロック内でのみアクセス可能です。

変数バインディングと不変性に関するこれらの基本概念を理解することで、Rust プログラミングの世界への最初の一歩を踏み出すことができます。これらの原則は単なる糖衣構文ではありません。これらは、メモリの安全性と効率的なコード実行を確保するという Rust の中核となる哲学の一部です。

第 3 章: Rust のデータ型

3.1 スカラー型 (スカラー型)

整数 (整数)

Rust では、8 から 64 ビットの範囲の整数は符号付きまたは符号なしで指定できます。デフォルトの整数型は ですi32。これは、64 ビット システムでも一般的に最も高速です。

let x: i32 = 42;
let y: u64 = 1234567890;

浮動小数点数 (浮動小数点数)

Rust は、浮動小数点数用にf32との 2 つのプリミティブ型を提供しますf64デフォルトは、f64より精度が高いためです。

let x = 3.14; // f64 by default
let y: f32 = 2.71;

ブール値

Rust のブール型には、trueと の2 つの値がありますfalseこれらは条件文でよく使用されます。

let is_true = true;
let is_false: bool = false;

キャラクター(文字種)

Rust では、char型は単なる ASCII ではない Unicode スカラー値を表します。

let a = 'a';
let omega = 'Ω';

3.2 複合型(複合型)

タプル

タプルは、さまざまな型の値のコレクションです。タプルはデフォルトでは不変です。

let tuple: (i32, f64, char) = (42, 6.28, 'J');

配列

配列は、同じ型の要素のコレクションです。配列のサイズは固定です。

let arr: [i32; 5] = [1, 2, 3, 4, 5];

構造体

構造体は、複数の関連する値に名前を付けてパッケージ化できるカスタム データ型です。

struct Point {
    
    
    x: i32,
    y: i32,
}
let origin = Point {
    
     x: 0, y: 0 };

列挙型

列挙型を使用すると、可能なバリアントを列挙することで型を定義できます。

enum Direction {
    
    
    North,
    South,
    East,
    West,
}
let dir = Direction::North;

Rust で効果的にプログラミングするには、これらのデータ型を理解することが重要です。これらは、より複雑なデータ構造とアルゴリズムの構成要素として機能します。これらの種類に慣れてくると、プログラミングのドキュメントやディスカッションで一般的に使用される技術的な英語用語もより流暢に話せるようになります。

第 4 章: 関数の定義と呼び出し

関数の宣言

Rust では、関数はfnキーワード、その後に関数名、パラメータ、戻り値の型を使用して宣言されます。構文は非常に簡単です。

fn function_name(param1: Type1, param2: Type2) -> ReturnType {
    
    
    // Function body
}

たとえば、2 つの整数を加算する関数は次のようになります。

fn add(a: i32, b: i32) -> i32 {
    
    
    a + b
}

パラメータと戻り値

Rust 関数はゼロ個以上のパラメーターを取ることができます。各パラメータの型は明示的に指定する必要があります。戻り値の型はオプションです。省略した場合、関数は()(単位) を返します。

// Function with no parameters and no return value
fn display_message() {
    
    
    println!("Hello, world!");
}

// Function with parameters but no return value
fn greet(name: &str) {
    
    
    println!("Hello, {}!", name);
}

関数の呼び出し

Rust での関数の呼び出しは、C++ などの他の言語と似ています。

let result = add(5, 10);

読みやすさを向上させるために、名前付き引数を使用することもできます。

let result = add(a: 5, b: 10);

高次関数

Rust は高階関数をサポートしています。つまり、関数を引数として他の関数に渡したり、関数を返したりすることができます。

fn apply<F>(f: F, x: i32) -> i32
where
    F: Fn(i32) -> i32,
{
    
    
    f(x)
}

let square = |x| x * x;
let result = apply(square, 5);

この章では、Rust での関数の定義と呼び出しの基本について説明しました。これらの概念を理解することは、効率的でクリーンなコードを作成するために重要です。次の章にご期待ください。Rust のコメントとドキュメントについて詳しく説明します。

第 5 章: コメントとドキュメント

行コメントとブロックコメント(行コメントとブロックコメント)

Rust では、コードの読みやすさとメンテナンスのためにコメントは不可欠です。コメントには次の 2 種類があります。

  1. 行コメント: これらは行で始まり//、行の終わりまで続きます。

    // This is a line comment.
    
  2. ブロック コメント: これらは で始まり で/*終わり*/、複数行にまたがります。

    /* 
       This is a block comment.
       It spans multiple lines.
    */
    

ドキュメントのコメント

Rust は、ドキュメントの自動生成に役立つドキュメント コメントもサポートしています。これらのコメントは、///単一行のドキュメントまたは//!モジュールレベルのドキュメントの場合に始まります。

/// This function adds two numbers.
///
/// # Examples
///
/// ```
/// let sum = add(3, 4);
/// assert_eq!(sum, 7);
/// ```
pub fn add(a: i32, b: i32) -> i32 {
    
    
    a + b
}

自動生成ドキュメント

コマンドを使用して、Rust コードの HTML ドキュメントを生成できますcargo docこれにより、Web ブラウザで開いてドキュメントを表示できる HTML ファイルが生成されます。

cargo doc --open

ベストプラクティス

  1. 簡潔に (简洁) : コメントは短く、要点を絞ったものにしてください。
  2. Be Clear (清晰) : 複雑なロジックを説明するには、単純な言語を使用します。
  3. 冗長性を避ける (回避冗余) : 明らかなことは述べないでください。コメントは追加の洞察を提供するはずです。

コメントやドキュメントを Rust コードに組み込むことで、コードがより理解しやすくなるだけでなく、将来自分自身や他の人にとって貴重なリソースを作成することもできます。この実践は「ドキュメントとしてのコード」の哲学とよく一致しており、プログラミングの旅をより効果的で洞察力に富んだものにします。

結論

プログラミング学習において、理解することは、より高いレベルに進むための重要なステップです。ただし、新しいスキルやアイデアを習得するには、常に時間と粘り強さが必要です。心理学の観点から見ると、学習には絶え間ない試行錯誤と調整が伴うことが多く、これは私たちの脳が問題を解決するための「アルゴリズム」を徐々に最適化していくのと似ています。

このため、間違いに遭遇したときは、それを単なる煩わしさとしてではなく、学び改善する機会として捉える必要があります。これらの問題を理解して解決することで、現在のコードを修正できるだけでなく、プログラミング スキルを向上させ、将来のプロジェクトで同じ間違いを犯すことを防ぐことができます。

皆さんも積極的に参加し、プログラミング スキルを継続的に向上させることをお勧めします。あなたが初心者であろうと経験豊富な開発者であろうと、私のブログがあなたの学習の旅に役立つことを願っています。この記事が役立つと思われる場合は、クリックしてブックマークするか、コメントを残して洞察や経験を共有してください。また、私のブログの内容について提案や質問をすることも歓迎します。「いいね!」、コメント、共有、そして注目のすべてが私にとって最大のサポートであり、共有と創造を続ける動機です。


私の CSDN ホームページを読んで、よりエキサイティングなコンテンツのロックを解除してください: Bubble の CSDN ホームページ
ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/qq_21438461/article/details/133351529