📝
Rustプログラミング入門 at Udemy
Rustプログラミング入門
Rustプログラミング入門 (最高峰・最難解言語) | Udemy の学習メモ
Rust言語
- 2015年リリースの静的型付け言語
- C/C++ の代わり
- C/C++ 並みに高速で、C/C++のメモリ安全性を克服するため言語仕様として保証
- 「所有権」という概念
- GC(ガベージコレクション)の複雑さに懸念を持っていた
- Rustのメモリ管理って面白い - Qiita
- 処理速度
- 開発者が好きな言語5年連続1位 (Stack overflow survey)
- 2021年Rust Foundationの設立
- 一度習得してしまえば一生使える (システムプログラミング言語)
The book
curl --proto '=https' --tlsv1.3 https://sh.rustup.rs -sSf | sh
Rust is installed now. Great!
To get started you may need to restart your current shell.
This would reload your PATH environment variable to include
Cargo's bin directory ($HOME/.cargo/bin).
To configure your current shell, run:
source "$HOME/.cargo/env"
Cargo
cargo new rust_lesson1
C:\workspaces\rust>cargo new rust_lesson1
Created binary (application) `rust_lesson1` package
Hello world
You may need to install the Visual Studio C++ Build tools when prompted to do so. If you are not on Windows see "Other Installation Methods".
rustの開発環境構築メモ(on WIndows10) - 色々なメモ。
* 実行するタスク: C:\Users\s5551\.cargo\bin\cargo.exe run --package rust_lesson1 --bin rust_lesson1
Compiling rust_lesson1 v0.1.0 (C:\workspaces\rust\rust_lesson1)
Finished dev [unoptimized + debuginfo] target(s) in 2.08s
Running `target\debug\rust_lesson1.exe`
Hello, world!
- package
- crate
- module
mod vars;
fn main() {
println!("Hello, world!");
vars::run();
}
pub fn run(){
println!("this is vars module")
}
アプリケーションのメモリ
- Heap ... String, Vector
- Stack ... サイズが決まった変数や配列など
- Static ... const, 文字列リテラルの実態
- Text ... コード
fn main() {
let a = 10;
let b = 20;
println!("{} {}", a, b)
}
Mutable, Immutable
- 型推論
- アンダースコア(Rustの基本構文-3-) - Qiita
- シャドーイング: Rustのシャドーイングについて - やってみる
所有権
- 二重解放エラー
- 文字列スライスはデータを所有しない
Stack overflow, Vector型
- スタックは8MB
error: process didn't exit successfully: `target\debug\rust_lesson1.exe` (exit code: 0xc00000fd, STATUS_STACK_OVERFLOW)
その他
- 所有権・参照・借用
- ライフタイム (Non-Lexical Lifetime)
- ダングリングポインタ
- RAII (Resource Acquisition Is Initialization)
- Generics
- Generic lifetime annotation
- 構造体と列挙型
- マッチングパターン
- トレイトとトレイト境界
- ユニットテスト
- 外部ライブラリとカスタムライブラリ
Discussion