inflearn logo
知識共有
inflearn logo

エレガントなRust中級(3)- 文字列

Rustで文字列を扱っていて、ハングルの長さが違って表示されたり、文字列を切り出すコードがパニックしたことはありませんか?この講義では、Stringと&strの所有権の関係からUTF-8における文字とバイトの違いまで、視覚資料と実行可能な例を用いて説明します。文字列の生成・検索・分割・変換・Unicode正規化を練習し、不要なコピーを減らしながらも安全な文字列APIを設計するための基準を身につけます。

15名 が受講中です。

難易度 中級以上

受講期間 無制限

Rust
Rust
unicode
unicode
Rust
Rust
unicode
unicode

受講後に得られること

  • String、&String、&strの違いを理解し、状況に応じて適切な型を選択する能力

  • UTF-8における文字数とバイト数を区別し、文字列を安全に切り取る能力

  • 標準APIで文字列を生成・変更・検索・分割・結合する能力

  • 文字列と数値・日付を変換し、誤った入力を適切に処理する能力

  • ハングルの異なるUnicode表現を正規化して比較する能力

Rustの文字列を、所有権からUTF-8まで正しく扱う

文字列はユーザー入力、ファイルパス、JSONフィールド、エラーメッセージなど、ほぼすべてのプログラムで使用されます。 Rustでは、文字列を所有するStringと文字列の一部を借用する&strを区別する必要があります。

この講義では、String・&strのメモリ構造と所有権の関係を理解し、韓国語を含むUTF-8文字列を文字境界を壊さずに処理する方法を学びます。文字列の生成・変更・検索・分割・結合から、数値・日付の変換、ハングルのUnicode正規化まで、実行可能な例で確認します。

入力はできるだけ借用し、新しい文字列が必要な場合にのみ String を作成する基準も身につけます。講義を終える頃には、文字列処理関数を安全で呼び出しやすい形に設計できるようになります。

このような内容を学びます

Stringと&str:所有することと借りることの基準

String、&String、&strがそれぞれ何を指すのかを、メモリ構造と所有権の観点から見ていきます。配列とVecのスライスを復習した後、文字列全体または一部をコピーせずに&strとして借用する方法を学びます。

入力を読み取るだけの関数、文字列を保存する関数、元のデータの一部を返す関数で、どの型を使うべきかも具体例を比較しながら説明します。

元データをコピーせず、開始位置と長さによって一部の区間を借用するスライスの構造

UTF-8を理解し、文字列を安全に処理する

Rustの文字列の長さは文字数ではなくバイト数を表します。英字とハングルが混在する文字列を通じて、len、chars、bytesの違いを確認し、バイトインデックスで文字列を切り出すと、なぜパニックが発生する可能性があるのかを学びます。

続いて、文字列の生成・変更・検索・分割・結合、書式設定、数値・日付変換、ハングルのUnicode正規化を練習します。最後には、空白の整理、UTF-8の境界を守った先頭部分の抽出、設定文字列の分割、センシティブな単語のマスキングといった関数を自分で実装し、テストします。

文字数とバイト数が異なる理由

受講前の注意事項

実習環境

  • Windows、macOS、Linuxで実習できます。

  • 最新のRust stableツールチェーンとCargoが必要です。

  • Rustコードを編集できるVS Code、Zedなどのエディターを用意してください。

  • 例はRust 2024エディションを使用します。

  • 日付とUnicode正規化の例に必要なクレートはCargoがダウンロードするため、初回ビルド時にはインターネット接続が必要です。

  • 特別なハードウェアや高いPCスペックは必要ありません。


学習資料

  • オンライン教材

  • GitHubソースコード

前提知識と注意事項

  • 変数、関数、条件文、繰り返し文のようなRustの基本文法を知っている必要があります。\

  • 所有権と借用の基本概念を理解している必要があります。


  • Vec とスライスを使用した経験があると良いです。


  • 「エレガントなプログラミング言語Rust入門」講座の受講をお勧めします。

こんな方に
おすすめです

学習対象は
誰でしょう?

  • Rustの所有権は学んだけれど、Stringと&strをいつ使うべきか迷っている開発者

  • ハングル文字列の長さの計算や切り出しで予期せぬ結果やパニックに見舞われた開発者

  • 文字列を処理する際、習慣的にcloneしたり新しいStringを作ったりする開発者

  • ユーザー入力、ファイル内容、設定値など、外部から入ってくる文字列を安全に処理したい開発者

前提知識、
必要でしょうか?

  • Rustの基本文法を理解する

  • Rustのメモリ所有権の概念を理解する

こんにちは
hatemogiです。

キャリア認証

2,169

受講生

171

受講レビュー

27

回答

4.7

講座評価

9

講座

関数型プログラミングに関心の高いバックエンド開発者です。カカオの開発チーム長、NHNの主席、LINE+のリードを務め、開発チームのリーディングを行ってきました。また、DnotitiaというAIスタートアップで開発チーム長として働き、Rustでプロジェクトを進めました。

講座掲載日: 
最終更新日: 

受講レビュー

まだ十分な評価を受けていない講座です。
みんなの役に立つ受講レビューを書いてください!

hatemogiの他の講座

知識共有者の他の講座を見てみましょう!

似ている講座

同じ分野の他の講座を見てみましょう!

期間限定セール、あと8日日で終了

¥7,260

40%

¥1,581