WATANABE REN wrote a new post, Rustのテスト 3年 5か月前
Rustにはデフォルトで自動テストツールがcargoに搭載されている。
ベーシックなテスト機能が一通りそろっているので、これらでガリガリテスト書いていけばよいと思う。
基本的には以下のコマンドで実行する。
cargo test
関数へ#[test]で注釈することで、テスト関数へと変更することが出来る。
#[test]
fn hoge() {
…[…]
WATANABE REN wrote a new post, トレイト 3年 6か月前
Rustの型での共通のふるまいを定義できる機能。他言語のインターフェースに近い。
定義としては以下
pub trait Hoge {
fn hogehoge(&self) -> String;
}
上記トレイトを実装するとこのような形になる
pub struct Fuga {}
impl Hoge for Fuga {
fn hogehoge(&self) {}
}
トレイトは実装する際には、トレイ[…]
WATANABE REN wrote a new post, Rustのジェネリクス型 3年 7か月前
抽象的な型の概念。
Javaとかでも実装されている機能。Vecなどの、宣言時におけるTという抽象的な型。(Tには何の型でも入力できる)
関数シグニチャで用いた場合、以下のように宣言する。
fn hoge(list: &[T]) -> T {
慣習として最初のジェネリクス型へは、T(Typeの頭文字)を用いる。
同一の文字列で定義した型には同一の型が入力される。同一文字列のジェネリクス型へ別の型を入力した場[…]
WATANABE REN wrote a new post, Rustのエラー処理 3年 9か月前
Rustには例外機能が存在しない。
そもそも例外とは
私が業務経験した中だとJava、Python、C#と多くの言語で存在している機能。
プログラムを実行した際に発生しうる特定エラーを検知し、プログラムを終了することなく処理を続行する。
構文としては以下のようなイメージ
try {
hogehoge();
} catch Exception {
fugafuga();
}
tryブロック内でエラーが発生[…]
WATANABE REN wrote a new post, Rustの標準ライブラリデータ構造 3年 9か月前
各データ構造はヒープ領域にデータを確保する為、実行時に要素数の変更等が行える。
ベクタ
特定のデータ型を挿入可能な可変長のリスト。
let vector: Vec = Vec::new();
let mut vector = vec![1, 2, 3]; // マクロを利用した初期化
// 更新する際にはpushメソッドを使用する
vector.push(4);
vector[…]
WATANABE REN wrote a new post, Rustのモジュールシステム 3年 11か月前
クレート
Rustのコンパイルの単位。コンパイラの開始地点となるクレートルートを保持し、
コンパイルすることで関連した機能群を一つのスコープにまとめることが出来る。
パッケージ
ある機能群を提供する1つ以上のクレート。Cargo.tomlでパッケージをどのようにビルドするかを定義する。
0個か1個のライブラリクレートを保持する(2個以上はダメ)。バイナリクレートはいくらでも持っても大丈夫。
ライブラリでもバ[…]
WATANABE REN wrote a new post, Rustにnull機能は存在しない(Option) 3年 12か月前
Rustでは値が存在するか不在かという概念をnullではなくenumで実現する。
pub enum Option {
None,
Some(T),
}
上記のNoneはあくまでenumの列挙子であり、[…]
WATANABE REN wrote a new post, Rustにおける列挙型 4年前
列挙型(enum)…型が取りうる値をすべて列挙しパターン化することが出来るデータ型。各列挙子へ値を格納できる。例えばIP。
enum IpAddr {
V4(u8, u8, u8, u8),
V6(String),
}
let home = IpAddr::V4(127, 0, 0, 1);
let loopback = IpAddr::V6(String::from(“::1”));[…]
WATANABE REN wrote a new post, Rustにおける構造体 4年 1か月前
Rustにはクラスの概念はない。C言語と同様に構造体が存在する。
構造体…データの集合に名前を付けることで型として扱うことが出来る。オブジェクト指向言語におけるメンバだけで構成されたクラス(アクセス修飾子は定義できない)。
struct User {
username: String,
email: String,
sign_in_count: u64,
active: bool,[…]
WATANABE REN wrote a new post, Rustのメモリ管理 4年 2か月前
所有権
Rustの特徴的な機能。ガベージコレクションとはまた違うメモリ管理機能。
所有権のルール
Rustの値は、所有者と呼ばれる変数と対応している
いかなる時も所有者は一つである。ムーブで保証する
所有者がスコープから外れたら、値は破棄される。dro[…]
WATANABE REN wrote a new post, Cargoについて 4年 4か月前
概要
Cargoは、Rustのビルドシステム兼、パッケージマネージャである。(JavaだとMavenやGradle、Node.jsだとNpmやYarnあたりのツール)
TOMLという、簡便な設定言語で記述したCargo.tomlファイルにライブラリの依存関係を記述し、同階層に存在するsrcディレクトリ内のソースと記述された依存関係に基づいたビルドを行う。
cargo new
新規プロジェクトをカレントディレクトリ内に作[…]
WATANABE REN wrote a new post, AWS CloudFormationメモ ~マクロ~ 4年 5か月前
Cloud[…]
WATANABE REN wrote a new post, AWS CloudFormationのメモ 4年 6か月前
AWS[…]
WATANABE REN wrote a new post, Rust+WSLでHelloWorldした際のメモ 4年 7か月前
Rustの公式で、WSLインストール手順を実施し、HelloWorldプロジェクトを作成
$ curl –proto ‘=https’ –tlsv1.2 -sSf https://sh.rustup.rs | sh
$ source $HOME/.cargo/env
$ cargo new hello-rust
$ cd hello-rust/
$ cargo run
cargo run[…]
WATANABE REN wrote a new post, SQLのWITH句 4年 8か月前
便利な割に自分の周りで広まってないので、ここでメモしておく。
PostgreSQLの現場でかなり使用していた。(mysqlは8以降でないと使用できないらしい…)
基本構文
WITH table_name AS (query)
宣言した”table_name”で、クエリ内で一時ビューを作成することが出来る。
例:①
WITH tmp_hoge AS (SELECT * FROM hoge)
SELECT[…]
WATANABE REN wrote a new post, AWSのサービス種別 4年 9か月前
全体のシステムとして以下の2種類のサービスがある。
マネージド型
スケーリング、可用性などをAWS側で管理されているタイプのシステム
AWS側で行うため管理が容易
RDS、S3など
アンマネージド型
スケーリング、可用性の内容などをユーザーが独自で設定する必要があるタイプのシステム
ユーザー自身で管理する必要がある
EC2など[…]
WATANABE REN wrote a new post, Amazon VPC 4年 9か月前
Amazon VPC
Amazon Virtual Private[…]
WATANABE REN wrote a new post, 初めまして 4年 11か月前
初めまして。
フリーのSEを営んでおります。渡邉と申します。
今後、こちらのブログで、現在、私が生業としております、
ITに関する話題を記載したいと思います。よろしくお願いします。
拙い内容ながら、以下の内容を展開していこうと考えております。
AWSに関するTIPS
色々な事情で触れることが多いので備忘録も兼ねてます
学習したいプログラミング言語に関するTIPS
業務[…]
WATANABE REN さんのプロフィールが更新されました。 4年 11か月前
WATANABE REN さんがプロフィール写真を変更しました 4年 11か月前