見出し画像

Rust ニュータイプイディオムとは 使い方と注意点について

今回はRustにおけるニュータイプイディオムについて説明していきます。

ニュータイプイディオムとは

ニュータイプイディオムは、既存の型に新しい型をラップして、型安全性を高めたり、意図しない操作を防いだりするために使用される設計パターンです。

既存の型に新しい意味や振る舞いを加えたい場合に便利です。


ニュータイプイディオムの使い方

ニュータイプイディオムを使用するには、新しい構造体を定義し、その中に既存の型を単一のフィールドとして持たせます。

例えば、以下のようにEmail型を作成して、文字列型をラップすることができます。

struct Email(String);

impl Email {
    pub fn parse(s: &str) -> Result<Email, String> {
        if s.contains('@') {
            Ok(Email(s.to_string()))
        } else {
            Err("Invalid email".to_string())
        }
    }
}

Email構造体がStringをラップしており、parseメソッドを通じてバリデーションを行うことで、ニュータイプを使って特定の制約やメソッドを追加することができます。


ニュータイプイディオムの注意点

データアクセスの手間

ニュータイプはデータアクセスに余分な手間がかかる可能性があります。
ラップされた値にアクセスするためには追加のメソッドやパターンマッチングが必要になることがあります。

追加の実装が必要

ニュータイプが既存の型と同様の振る舞いをするようにしたい場合、多くのトレイトの手動での実装が必要になります。
この手間を省くためにderive属性を使用することもできますが、すべてのトレイトがderive可能なわけではありません。


Rustをもっと詳しくなりたい方に

Rustプログラミング完全ガイド 他言語との比較で違いが分かる!

個人的には他の言語開発もそれなりにあったことからこの本を読むことでかなりRustへの理解が深まりました。
プログラムやシステム的な専門用語は当たり前に登場するものの、他の言語での開発経験がある方なら問題ないでしょう。むしろその経験があることで、多言語との比較をしながら読み進めることができます。
内容的には大容量かつ丁寧すぎるほど嚙み砕いて説明がされているため、情報量は十分といえます。Rust自体学習コストが高く、難易度の高い言語のためこのくらいが妥当といえます。
プログラミング初心者レベルの方には難しい内容となっていますが、Rustの概念を理解し、基礎を把握することができる本であること間違いなしです。

Rust学習のために筆者が実際に読んでおすすめしたい本をまとめています。


基礎から学ぶRustプログラミング入門

本コースではRustについて全く経験がない方でもスムーズに学習を進められるようにとなっています。
基本的にはコードベースで解説を行い、抽象度が高く難しい内容に関しては適宜スライドも使いながら丁寧に解説します。そしてただ文法を学ぶだけではなく、最終的には演習としてCLIアプリケーションを作成し学習内容の定着を図ります。

以下の記事では筆者が実際に受講したおすすめUdemy教材をまとめています。

※本ページではアフィリエイトリンク(PR)が含まれています


この記事が参加している募集

この経験に学べ

この記事が気に入ったらサポートをしてみませんか?