Blog (6 of 8)
-
Rust覚書9: ジェネリック型
全てのプログラミング言語には概念の重複を効果的に処理するためのツールがある Rustにはそのようなツールの1つにジェネリックがある (`Option<T>`, `Vec<T>`, `HashMap<K, V>`) ## 関数を抽出し、重複を排除する: removing duplication by extracting a function ```rust fn main() { let number_list = vec![34, 50, 25, 100, 65]; let mu
2/27/2020
- rust
-
Rust覚書8: エラーハンドリング
Rustの信頼性への取り組みはエラー処理(error handling)にも及ぶ エラーはソフトウェアの宿命であるため、 Rustには何かがうまく行かない状況を処理するための多くの機能がある 多くの場合、Rustではエラーの可能性を認識し、 コードをコンパイルする前に何らかのアクションを取る必要がある この要件により、本番環境にコードをデプロイする前にエラーを発見し、 適切に処理できるようになるため、 プログラムの堅牢性が高まる Rustは、エラーを2つの主要なカテゴリーに分類する (回復可能か、
2/24/2020
- rust
-
Rust覚書7: 共通コレクション
Rustの標準ライブラリには、コレクションと呼ばれる非常に便利なデータ構造体が多数含まれている ほとんどのデータ型は1つの特定の値を表すが、コレクションには複数の値を含めることができる 配列やタプルとは異なり、これらのコレクションが指すデータはヒープに保存される つまり、コンパイル時にデータ量を知る必要はなく、プログラムの実行に応じてデータの量を増減できる コレクションの種類ごとに異なる機能とコストがある 現在の状況に適したコレクションを選択することは、時間の経過とともに向上するスキル Rus
2/21/2020
- rust
-
Rust覚書6: 開発プロジェクト管理
## パッケージ、クレート、モジュールを使用した開発プロジェクトの管理: managing growing projects with packages, crates, and modules 大規模なプログラムを作成するときは、プログラム全体を追跡することが難しくなるため、 コードを整理することが重要になる 関連する機能をグループ化し、コードを個別の機能で分離することにより、 特定の機能を実装するコードの場所と、機能の動作を変更する場所を明確にする パッケージには、複数のバイナリクレートと、オプ
2/20/2020
- rust
-
Rust覚書5:enum and pattern matching
列挙型(`enums`)は多くの言語にある機能 しかし、その機能は言語毎に異なっている Rustの列挙型は、F#, OCaml, Haskellなどの関数型言語の代数データ型に最も似ている ## 列挙型の定義: defining an enum ```rust enum IpAddrKind { v4, v6 } ``` ### enum values ```rust let four = IpAddrKind::V4; let six = IpAddrKind::V6; ``
2/19/2020
- rust
-
Rust覚書4: 構造体(Structs)
## 構造体を使った関連データの構造化: using structs to structure related data 構造体または構造化はカスタムデータ型で、 複数の関連する値に名前を付けてパッケージ化し、 意味のあるグループを作成できる ## 構造体の定義のインスタンス化: defining and instantiating structs 構造体はタプルのように異なる型で構成できる タプルと異なり、各データに名前を付けて値の意味を明確にできるため、 インスタンスの値にアクセスするときにデ
2/18/2020
- rust
-
Rust覚書3: 所有権(Ownership)
## 所有権: ownership Rustの最も特徴的な機能であり、 ガベージコレクタ(`garbage collector`)を必要とせずにメモリ安全を保証するもの つまり、めちゃくちゃ大事なことである いくつかの言語はGC(ガベージコレクタ)が絶えず動いており、 それ以外の言語はプログラマが明示的にメモリ解放を行う必要がある Rustは第3のアプローチを行う: メモリは所有権によってコンパイル時に管理される また、所有権はプログラムの実行速度に影響しない 多くのプログラマにとって所有権は
2/17/2020
- rust
-
Rust覚書2
- インデントはスペース4つ - 定数は大文字アンダースコア繋ぎ - アンダースコアは数字の可読性向上にも利用可能 (`1_000_000` same `1000000`) - マクロ呼び出しに `!`を使う(`println!` はマクロ) - 宣言したけど、使わない変数名にはアンダースコアを付ける ## 関数 関数はスネーク記法で記述する ```rust fn main() { another_funcion(5, 5, 5.4); } fn another_funcion(x: i3
2/17/2020
- rust
-
Rust覚書
Rustを触ってみたのでその覚書 ## 変数 変数には、可変と不変が有り、基本は不変 ```rust // immutable let x = 10; x = 5 // compile error ``` ```rust // mutable let mut x = 10; x = 5; // ok ``` また、参照渡の場合も、基本は不変であるため、可変の場合は明記する必要がある `Java` や `Dart` で言う所の `final`かな ```rust let mut x = 10;
2/16/2020
- rust
-
Linuxで始めるOS自作入門: 3日目
1日目・2日目に比べて濃い内容でした。 1. フロッピーディスクを意識した読み込み 1. 画面モードの切り替え 1. C言語 今回は2箇所躓いたポイントがあります。 ## Bootに失敗する ```shell $ qemu-system-i386 helloos.img ``` この記述でBootに失敗するようになりました。 何度もソース読み直したんですが、 わけがわからず・・・ 2日目までの内容との違いなのですが、 3日目の記述は **フロッピーディスク** の仕組みを意識したデータの読み
4/20/2019
- OS自作入門