マガジンのカバー画像

Rust

46
Rustについて執筆した記事をまとめています。
運営しているクリエイター

記事一覧

Rust forループとrangeの使い方と注意点について

Rustのforループとrangeは、コレクションや数値範囲を反復するための使用する構造です。 forループは、イテレータを使ってデータの集まりを順次処理するために使用され、rangeは指定した範囲内の値を生成します。 forとrangeの使い方forループ forループを使って、イテレータを反復処理できます。 let numbers = vec![1, 2, 3, 4, 5];for num in &numbers { println!("{}", num)

Rust 配列とスライスの使い方と注意点

Rustの配列(array)とスライス(slice)は、データの連続した部分を扱うための基本的なデータ構造です。 配列は固定長で、スライスは可変長ですが、所有権を持たず、他のデータ構造に基づいているのが特徴です。 配列(Array)配列は固定長であり、同じ型の要素を持ちます。 配列の長さは定義時に指定され、変更することはできません。 配列の定義と初期化 let numbers: [i32; 5] = [1, 2, 3, 4, 5];let zeros = [0; 10

Rust 所有権とムーブの使い方と注意点について

Rustの所有権とムーブは、言語の安全性とパフォーマンスを支える重要な概念です。 所有権はメモリ管理を通じてリソースの安全な操作を可能にし、ムーブはデータの所有権の移動を制御します。 所有権所有権は変数や値に関する一意的な制御権を表します。 Rustでは各値に所有者が一人だけ存在し、所有者が変わると古い所有者はもはやその値にアクセスできなくなります。 fn main() { let s1 = String::from("hello"); // `s1`がこのSt

Rust if/else/else if 使い方と注意点

Rustのifとelseは、条件分岐を行うための制御構造です。 if文とelse文を使って、条件に基づいて異なるブロックのコードを実行することができます。 また、Rustのif/elseは式として使用できるため、値を返すことも可能です。 if/elseの使い方基本的なif/else構文 条件式が真の場合にifブロックを、偽の場合にelseブロックを実行します。 let x = 10;if x > 5 { println!("x is greater than 5

Rust FromとIntoトレイトの使い方と注意点

RustのFromとIntoトレイトは、異なる型の間で値を変換するための仕組みをです。 FromトレイトFromトレイトを実装することで、ある型から別の型への変換を定義することができます。 struct Point { x: i32, y: i32,}impl From<(i32, i32)> for Point { fn from(t: (i32, i32)) -> Self { Point { x: t.0, y: t.1 } }

Rustのmut/ミュータビリティとは 使い方と注意点について

Rustの「ミュータビリティ」(mutability)は、変数やデータ構造の内容を変更できるかどうかを示す概念です。 Rustでは、変数はデフォルトで不変(immutable)であり、ミュータブルにするには特別なキーワードを使用する必要があります。 ミュータビリティの使い方変数のミュータビリティ Rustではletキーワードを使って変数を宣言しますが、変数をミュータブルにするにはmutキーワードを追加します。 let mut x = 5; x = 6; ミュータブル

Rust リテラルとオペレータとは 使い方と注意点について

リテラルリテラルは、ソースコードに直接記述された固定値を指します。 Rustでは、数値、文字、文字列、ブール値、および複合データ型(タプルや配列など)に対応するリテラルが用意されています。 数値リテラル 整数リテラルはデフォルトでi32型、浮動小数点数はf64型です。 57u8、3.14f32などのように型サフィックスを使用して、異なる数値型を指定することもできます。 また数値リテラルには、二進数(0b)、八進数(0o)、十六進数(0x)、バイト(b'A')も含まれま

Rust 構造体/structsの使い方と注意点について

Rustの構造体/structsは関連するデータをまとめて一つの単位として扱うためのカスタムデータ型です。 構造体を使用することで、異なるデータピースを一つのグループにまとめ、のデータの管理を容易にすることができます。 構造体の使い方定義方法 構造体は以下のように定義します。 struct Person { name: String, age: u32,} Person という名前の構造体を定義しており、String 型の name と u32 型の ag

Rust ジェネリクスとは 使い方と注意点について

Rustのジェネリクスは、コードの一部を汎用化することで、特定のデータ型に依存せず、異なるデータ型で再利用できるようにするための機能で。 ジェネリクスを使うことで、重複コードの削減や保守性の向上が見込めます。 ジェネリクスの使い方ジェネリクスは、関数、構造体、列挙型、トレイトなどに適用できます。 通常、ジェネリクスは角括弧<>で囲み、コード内で使用する際に具体的な型に置き換えられます。 ジェネリクスを使った関数の例 fn generic_function<T>(val

Rust matchとは 使い方と注意点について

Rustのmatch文はパターンマッチングを用いて条件分岐を行うために使います。 matchを使うと、値の種類や内容に基づいて異なるブロックのコードを実行することができます。 matchは、安全で柔軟なパターンマッチングを提供する一方、条件分岐が明確であることを保証します。 matchの使い方基本的なmatch構文 matchを使って、特定のパターンに基づいて条件分岐を行います。 let number = 2;match number { 1 => print

Rust ガードとは 使い方と注意点について

Rustの「ガード」は、パターンマッチングに追加の条件を導入する機能です。 ガードを使用すること、match文やif let構文などで、パターンがマッチする際に条件を追加して制御を強化できます。ガードは、パターンマッチングにおいてより細かい条件分岐を可能にし、柔軟なコードを記述できるようにします。 ガードの使い方match文でのガード match文にガードを使用すると、パターンがマッチした際に追加の条件を確認して、条件に応じてブロックを実行することができます。 let

Rust whileループの使い方と注意点

Rustのwhileループは条件がtrueである限り、ブロックのコードを繰り返し実行するための制御構造です。 whileループは特定の条件に基づいてループを実行するのに適しており、無限ループを作成するloopと比べて、終了条件が明確です。 whileの使い方基本的なwhile構文 whileは条件がtrueである間、繰り返しブロック内のコードを実行します。 let mut count = 0;while count < 5 { println!("Count:

Rust loopとは 使い方と注意点について

Rustのloopは無限ループを作成するための構造です。 loopを使うと、特定の条件が満たされるまで繰り返しコードを実行できます。無限ループは、意図的に途中で抜けるための制御構造と組み合わせることで、一般的なループとして使用できます。 loopの使い方基本的なloop構文 loopを使用して無限ループを作成します。 let mut count = 0;loop { count += 1; if count == 5 { break;

Rust バインディングとは 使い方と注意点について

Rustの「バインディング」とは、変数や構造体、タプルなどのデータ構造を名前に関連付けて、特定のスコープでアクセスできるようにすることを指します。 バインディングは、値と名前を関連付ける基本的な操作であり、Rustの所有権やスコープと密接に関連しています。 バインディングの使い方変数のバインディング 変数を定義するとき、letキーワードを使って値をバインドします。変数はスコープの間に存在し、スコープが終了すると自動的に解放されます。 let x = 5; 変数はデ