本文へスキップ
基本構文
| 構文 | 用途 | 例 |
let x = 値; | 不変変数 | let name = "Rust"; |
let mut x = 値; | 可変変数 | let mut count = 0; |
const X: T = 値; | 定数 | const MAX: u32 = 100; |
println!() | 出力 | println!("Hello"); |
println!("{}", x) | フォーマット出力 | println!("{} is {}", name, age); |
所有権(Ownership)
| 概念 | 説明 | 例 |
所有権の移動 | 代入で所有権が移る | let s2 = s1; // s1は使えない |
&T(参照) | 不変借用 | fn len(s: &String) -> usize |
&mut T | 可変借用 | fn push(s: &mut String) |
.clone() | 深いコピー | let s2 = s1.clone(); |
'a(ライフタイム) | 参照の有効期間 | fn f<'a>(s: &'a str) -> &'a str |
データ構造
| 型 | 用途 | 例 |
Vec<T> | 可変長配列 | let v = vec![1, 2, 3]; |
HashMap<K, V> | キーと値のペア | let mut m = HashMap::new(); |
struct | 構造体 | struct User { name: String, age: u32 } |
enum | 列挙型 | enum Color { Red, Green, Blue } |
Option<T> | 値があるかもしれない | let x: Option<i32> = Some(5); |
制御構文
| 構文 | 用途 | 例 |
if / else | 条件分岐 | if x > 0 { ... } else { ... } |
loop | 無限ループ | loop { break; } |
while | 条件付きループ | while x > 0 { x -= 1; } |
for in | イテレータ走査 | for item in vec.iter() { ... } |
match | パターンマッチ | match x { 1 => "one", _ => "other" } |
エラーハンドリング
| 構文 | 用途 | 例 |
Result<T, E> | 成功or失敗 | fn read() -> Result<String, io::Error> |
?演算子 | エラー伝搬 | let data = fs::read_to_string("f.txt")?; |
unwrap() | 値を取り出す(失敗でpanic) | let v = result.unwrap(); |
expect() | メッセージ付きunwrap | let v = result.expect("failed"); |
match Result | 明示的なエラー処理 | match result { Ok(v) => v, Err(e) => ... } |
トレイト
| 構文 | 用途 | 例 |
trait Name | トレイト定義 | trait Greet { fn hello(&self); } |
impl Trait for T | トレイト実装 | impl Greet for User { ... } |
#[derive(...)] | 自動実装 | #[derive(Debug, Clone)] |
impl T | メソッド定義 | impl User { fn new() -> Self { ... } } |
Cargo(パッケージ管理)
| コマンド | 用途 | 例 |
cargo new | プロジェクト作成 | cargo new myapp |
cargo build | ビルド | cargo build --release |
cargo run | ビルド&実行 | cargo run |
cargo test | テスト実行 | cargo test |
cargo add | 依存追加 | cargo add serde |
← チートシート一覧に戻る
このサイトではGoogle Analyticsを使用しています。学習体験の改善に役立てます。詳細