Cragoとは何か
⇒Cragoとは、Rustにおけるビルドシステム兼パッケージ管理システムである。
- cargo new プロジェクト名 ⇒ プロジェクトの新規作成
- cargo bulid ⇒ プロジェクトをビルド
- cargo run ⇒ プロジェクトの実行(コンパイルと実行)
- cargo check ⇒ 文法チェック
- cargo test ⇒ プログラムをテスト
- cargo doc ⇒ ドキュメントの作成
- cargo publish ⇒ ライブラリーを公開
プロジェクトの新規作成
// プロジェクトを作成
$ cargo new exam
// 作成されたメッセージ
>>>Created binary (application) `exam` package
⇒examフォルダ以下
- srcフォルダ
↳ main.rc // Rustのプログラムを書くためのファイル - .gitignore
- Cargo.toml // Rustプロジェクトの基本情報や設定情報を記載(マニフェストファイル)
が作成される。
$ cat Cargo.toml
[package]
name = "exam"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
⇒Tomlは設定ファイルを記述するための言語。
Rustのクレート(ライブラリー)を使ってみる
使い方の手順
Cargo.tomlへ依存関係を記述
例えば、num-bigintというクレートを使うときは、以下のように記述する。
Cargo.toml
[package]
name = "exam"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
num-bigint = "0.4" // ここを新しく記述
main.rs
// BigIntを使うよという宣言
use num_bigint::BigInt;
fn main() {
// BigIntのオブジェクトで変数を定義
let num = BigInt::from(9999);
println!("{}", num.pow(9999));
}
$ cargo run
>>>
Updating crates.io index
Compiling autocfg v1.1.0
Compiling num-traits v0.2.15
Compiling num-integer v0.1.45
Compiling num-bigint v0.4.3
Compiling exam v0.1.0 (C:\Users\reon1\vscode_project\Rust_ex\exam)
Finished dev [unoptimized + debuginfo] target(s) in 7.54s
Running `target\debug\exam.exe`
3678978362165515792692625984783565804550254385734776186401856613845616360874750523676165256293320372567032110928366569599432699044419901243683670414060788244958198542680024242555554443351351009201406913420042334263191360440293163925263158121905901809215111676734097618278012767257225075955830464560320325882929419607338700417637982216741626089370630527817919858248244425067882107032040504992133693942984257209267233391108496072474133573230329041350621303555562644061581689489773346475812382861630761542671206427399665195254818870660761299953367109234343296185246620947655303971825992891467766505449702800439539931629360781232287044852497103043500184438484564204069490370009909530341317336334459448625114891862723875368733284186382707049409415586173190187044779587133413954719164091602407423040277644116344823196694780496108829093860394544019077913975064195661487863596355153601977696894647060796078336789818901664700936711780540601588027849120357502804206125775390530395449721795143559185701130989019673973414458162432452044153141771428470077266579671902890598334369757628149907925325804486123759313657431199276911296909988206875045039284204307223007631041398551718017194485506118265217378424353090327768422839936661234797187668662233022432765913802940812930832473399186457600442171772676827615589458775748985986943115616079918481062535783932761746……以下略
⇒初回実行時は、crates.ioからnum_bigintをダウンロードして、ビルドし、実行を行う。
useの使い方
use クレート名::モジュール名
use クレート名::モジュール名1::モジュール名2;
use クレート名::{モジュール名A, モジュール名B};
Rustの範囲オブジェクト
「0..10」 ⇒ 0から9まで
「0..=10」⇒ 0から10まで
Rustで定数を記述する
定数宣言では、型の指定を省略できない
const 定数名: 型 = 値;
2次元配列の初期化
let mut 変数名 = [[初期値; 要素数]; 要素数]
match構文
if文が処理を真と偽に分ける処理ならば、match文は複数の値に応じて処理を分けることができる。
match 条件式 {
値1 => 値1の時の処理,
値2 => 値2の時の処理,
値3 => 値3の時の処理,
_ => 上記以外の処理,
}