<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>「ジェネリック」タグの記事一覧｜Rust Tech</title>
	<atom:link href="https://rust-tech.nkhn37.net/tag/generic/feed/" rel="self" type="application/rss+xml" />
	<link>https://rust-tech.nkhn37.net</link>
	<description>Rustプログラミング学習サイト</description>
	<lastBuildDate>Fri, 20 Mar 2026 22:58:09 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://rust-tech.nkhn37.net/wp-content/uploads/2025/06/cropped-lion-preasure-clear-32x32.png</url>
	<title>「ジェネリック」タグの記事一覧｜Rust Tech</title>
	<link>https://rust-tech.nkhn37.net</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【Rust入門】ジェネリックな関数や型の基本を分かりやすく解説</title>
		<link>https://rust-tech.nkhn37.net/rust-generic-func-type/</link>
					<comments>https://rust-tech.nkhn37.net/rust-generic-func-type/#respond</comments>
		
		<dc:creator><![CDATA[naoki-hn]]></dc:creator>
		<pubDate>Fri, 15 Aug 2025 20:00:00 +0000</pubDate>
				<category><![CDATA[Rust入門]]></category>
		<category><![CDATA[ジェネリック]]></category>
		<category><![CDATA[ジェネリック関数]]></category>
		<category><![CDATA[ゼロコスト抽象化]]></category>
		<category><![CDATA[トレイト]]></category>
		<category><![CDATA[トレイト境界]]></category>
		<category><![CDATA[モノモーフィゼーション]]></category>
		<category><![CDATA[型パラメータ]]></category>
		<guid isPermaLink="false">https://rust-tech.nkhn37.net/?p=399</guid>

					<description><![CDATA[Rust でジェネリックな関数や型（構造体・列挙体）を扱う方法を初心者にも分かりやすく解説します。 ジェネリック ジェネリックとは ジェネリック（generic）とは、型をパラメータとして受け取ることで、様々な異なる型に [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Rust で<span class="jinr-d--text-color d--marker1 d--bold">ジェネリック</span>な関数や型（構造体・列挙体）を扱う方法を初心者にも分かりやすく解説します。</p>



<h2 class="wp-block-heading jinr-heading d--bold">ジェネリック</h2>



<h3 class="wp-block-heading jinr-heading d--bold">ジェネリックとは</h3>



<p class="wp-block-paragraph"><span class="jinr-d--text-color d--marker1 d--bold">ジェネリック（generic）</span>とは、型をパラメータとして受け取ることで、様々な異なる型に対応できるようにする仕組みのことです。</p>



<p class="wp-block-paragraph">例えば、<code>i32</code> 型専用の関数を作成した場合、<code>i64</code> 型や <code>f64</code> 型に対しては、別の関数を定義しなければなりません。しかし、ジェネリックを使うことで「型に依存しない」関数にすることが可能です。Rust では、ジェネリックを関数、構造体、列挙体などで使用することができます。</p>



<p class="wp-block-paragraph">この記事では、ジェネリックな関数や型の基本について分かりやすく説明します。なお、公式ドキュメントなどではジェネリクス（generics）という複数形で表現されることも多いですが、この記事では「ジェネリックな」という表現に統一して紹介します。</p>



<h3 class="wp-block-heading jinr-heading d--bold">ジェネリックな関数</h3>



<p class="wp-block-paragraph">Rust は型安全性が高く、コンパイル時に厳密な型チェックを行うプログラミング言語です。もし、関数を書く場合に「<code>fn func(x: i32) -&gt; i32</code>」という型注釈をつけた場合には、<code>i32</code> 型以外の型を渡すことはできません。Rust には多くの数値型があるので、関数を書くときにどの型を選ぶのか、関数名をどうするかといった煩わしさに取り組まなくてはいけなくなります。</p>



<p class="wp-block-paragraph">以降で紹介するジェネリックな関数を使うことで、この問題を解決することができます。</p>



<h4 class="wp-block-heading jinr-heading d--bold">ジェネリックな関数の定義と使い方</h4>



<p class="wp-block-paragraph">以下の例を使用して<span class="jinr-d--text-color d--marker1 d--bold">ジェネリックな関数</span>の定義と使い方を説明します。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="rust" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">// 基本的なジェネリック関数
fn identity&lt;T>(x: T) -> T {
    x
}

// 複数の型パラメータを持つ関数
fn make_pair&lt;T, U>(x: T, y: U) -> (T, U){
    (x, y)
}


fn main() {
    let a: i32 = 10;
    let b: i64 = 50;
    let c: f64 = 100.5;

    // identity 関数の使用
    println!("{}", identity(a));
    println!("{}", identity(b));
    println!("{}", identity(c));

    // make_pair 関数の使用
    println!("{:?}", make_pair(a, b));
    println!("{:?}", make_pair(b, c));
    println!("{:?}", make_pair(c, c));
}</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
10
50
100.5
(10, 50)
(50, 100.5)
(100.5, 100.5)</pre>



<p class="wp-block-paragraph">上記は、受け取った引数をそのまま返却する <code>identity</code> 関数と受け取った 2 つの引数をペアのタプルにして返却する <code>make_pair</code> 関数です。</p>



<p class="wp-block-paragraph"><code>identity</code> 関数の直後に <code>&lt;&gt;</code> で囲んだ <code>T</code> という文字があります。この <code>&lt;T&gt;</code> は、関数定義の<span class="jinr-d--text-color d--marker1 d--bold">型パラメータ（type parameter）</span>と言います。これは、<code>identity</code> 関数が <code>T</code> という型パラメータで表現されるジェネリック関数であることを意味しています。</p>



<p class="wp-block-paragraph"><code>T</code> は <code>x</code> の型注釈と戻り値の型注釈に使用されています。これにより、<code>x</code> に <code>i32</code> が渡されたときは、戻り値も <code>i32</code> 型、<code>x</code> が <code>f64</code> の場合は、戻り値も <code>f64</code> というように、同じ型パラメータの部分には同一の型が入ることを示します。実際に、<code>main</code> 関数の <code>identity</code> 呼び出しでは、<code>i32</code>、<code>i64</code>、<code>f64</code> の変数を渡していますが、Rust コンパイラが型を推論することで適切に処理ができています。</p>



<p class="wp-block-paragraph">複数の型パラメータが必要となるような場合には、<code>make_pair</code> 関数での <code>&lt;T, U&gt;</code> のように複数の型パラメータを指定します。<code>T</code> や <code>U</code> の部分は任意の文字でよいですが、慣習として <code>T</code>, <code>U</code>, <code>V</code>, &#8230;といった型パラメータがよく使用されます。</p>



<p class="wp-block-paragraph">この時、<code>make_pair</code> 関数の戻り値を <code>(y, x)</code> とすると、<code>T</code>、<code>U</code> に同じ型の変数を渡す場合には問題になりませんが、型が異なる場合に不一致が発生してしまうので注意が必要です。<code>(y, x)</code> を返却するようにしたい場合には、戻り値の型パラメータを <code>(U, T)</code> とするのが適切です。</p>



<h4 class="wp-block-heading jinr-heading d--bold">明示的な型指定での呼び出し</h4>



<p class="wp-block-paragraph">Rust は型推論が強力であるため、関数に渡される変数などから型を適切に推論してくれます。型を明示的に指定して呼び出したい場合は「<code>関数名::&lt;型名&gt;()</code>」という形で明示的に呼び出すことも可能です。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="rust" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">fn main() {
    let a: i32 = 10;
    let b: i64 = 50;
    let c: f64 = 100.5;

    // identity 関数の使用
    println!("{}", identity::&lt;i32>(a));
    println!("{}", identity::&lt;i64>(b));
    println!("{}", identity::&lt;f64>(c));

    // make_pair 関数の使用
    println!("{:?}", make_pair::&lt;i32, i64>(a, b));
    println!("{:?}", make_pair::&lt;i64, f64>(b, c));
    println!("{:?}", make_pair::&lt;f64, f64>(c, c));
}</pre>



<p class="wp-block-paragraph">基本的には型推論に任せればよいでしょう。意図的に型を指定したい場合に、明示的に型を指定する方法があるということだけ覚えておいてもらえればと思います。</p>



<h3 class="wp-block-heading jinr-heading d--bold">ジェネリックな構造体</h3>



<h4 class="wp-block-heading jinr-heading d--bold">ジェネリックな構造体の定義と使い方</h4>



<p class="wp-block-paragraph">型パラメータは、以下のように<span class="jinr-d--text-color d--marker1 d--bold">ジェネリックな構造体</span>の宣言にも使用することができます。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="rust" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">// ジェネリックな構造体
struct SomeNum&lt;T, U> {
    c: char,
    num1: T,
    num2: U,
    num3: U,
}

fn main() {
    let some_number = SomeNum{
        c:'a', num1: 10, num2: 20.5, num3: 30.5
    };
    println!("{}", some_number.c);
    println!("{}", some_number.num1);
    println!("{}", some_number.num2);
    println!("{}", some_number.num3);

    let some_number1 = SomeNum{
        c: 'b', num1: 10.5, num2: 20, num3: 30
    };
    println!("{}", some_number1.c);
    println!("{}", some_number1.num1);
    println!("{}", some_number1.num2);
    println!("{}", some_number1.num3);
}</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
a
10
20.5
30.5
b
10.5
20
30</pre>



<p class="wp-block-paragraph">上記の構造体は、<code>char</code>型の<code>c</code> と、<code>T</code>、<code>U</code> という型パラメータの要素を持つ構造体となっています。<code>num1</code> は <code>T</code> 型、<code>num2</code> と <code>num3</code> は <code>U</code> 型の要素になっています。この構造体を使用する場合には、<code>num2</code> と <code>num3</code> は、同じ型でないといけないことに注意してください。</p>



<section class="wp-block-jinr-blocks-iconbox b--jinr-block b--jinr-iconbox"><div class="d--simple-iconbox6 ">
			<i class="jif jin-ifont-v2books" aria-hidden="true"></i>
			<div class="a--jinr-iconbox">
<p class="wp-block-paragraph">構造体の基本については以下を参考にしてください。</p>



<p class="wp-block-paragraph"><a href="https://rust-tech.nkhn37.net/rust-structs-basic/" target="_blank" rel="noreferrer noopener">【Rust入門】構造体の使い方を分かりやすく解説</a></p>
</div>
		</div></section>



<h3 class="wp-block-heading jinr-heading d--bold">ジェネリックな列挙体</h3>



<h4 class="wp-block-heading jinr-heading d--bold">ジェネリックな列挙体の定義と使い方</h4>



<p class="wp-block-paragraph">型パラメータは、以下のように<span class="jinr-d--text-color d--marker1 d--bold">ジェネリックな列挙体</span>の宣言にも使用することができます。列挙体の代表例である <code>Option&lt;T&gt;</code> 型や <code>Result&lt;T, E&gt;</code> 型についても、型パラメータの <code>T</code>、 <code>E</code> を持つジェネリックな列挙体となっています。</p>



<p class="wp-block-paragraph">以下では、<code>Result&lt;T, E&gt;</code> に似た独自の <code>MyResult&lt;S, F&gt;</code> 列挙体を定義しています。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="rust" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">// ジェネリックな列挙体
enum MyResult&lt;S, F> {
    Success(S),    // 成功時の値
    Failure(F, String),  // 失敗時の値とエラー文字列
    Uncertainty,
}

fn main() {
    let mut result = MyResult::Success::&lt;i32, u16>(10);
    if let MyResult::Success(code) = result {
        println!("Success {}", code);
    };

    result = MyResult::Failure(1, "Error1".to_string());
    if let MyResult::Failure(code, error) = result {
        println!("Failure {} {}", code, error);
    }

    result = MyResult::Uncertainty;
    if let MyResult::Uncertainty = result {
        println!("Uncertain");
    }

    // result の S は i32型で使用しているので以下はエラーとなる
    // result = MyResult::Success(10.0);

    // 異なる型での利用
    let result = MyResult::Success::&lt;f64, u8>(10.5);
    if let MyResult::Success(code) = result {
        println!("Success {}", code);
    };
}</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
Success 10
Failure 1 Error1
Uncertain
Success 10.5</pre>



<p class="wp-block-paragraph">列挙体を使用する際には「<code>MyResult::Success::&lt;i32, u16&gt;(10)</code>」のように <code>S</code> や <code>F</code> が何の型であるかを指定して使用します。この時、型パラメータ <code>F</code> については、以降のコードで使用されれば型推論で型を特定できますが、基本的には使用するタイミングで明示して定義するのが良いでしょう。以下のように型注釈をつけても構いません。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="rust" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">    let mut result: MyResult&lt;i32, u16> = MyResult::Success(10);</pre>



<p class="wp-block-paragraph">なお、コメントアウトしている「<code>result = MyResult::Success(10.0);</code>」は、既に <code>result</code> の <code>S</code> が <code>i32</code> 型であるのに対して、浮動小数点数を指定しているためエラーとなります。必要であれば、上記例のようにシャドーイングで再定義するか、別の変数で使用する必要があります。</p>



<section class="wp-block-jinr-blocks-iconbox b--jinr-block b--jinr-iconbox"><div class="d--simple-iconbox6 ">
			<i class="jif jin-ifont-v2books" aria-hidden="true"></i>
			<div class="a--jinr-iconbox">
<p class="wp-block-paragraph">列挙体の基本については以下を参考にしてください。</p>



<p class="wp-block-paragraph"><a href="https://rust-tech.nkhn37.net/rust-enum-basic/" target="_blank" rel="noreferrer noopener">【Rust入門】列挙型の基本を分かりやすく解説</a></p>
</div>
		</div></section>



<div id="nkhn3-4013530483" class="nkhn3- nkhn3-entity-placement" style="margin-left: auto;margin-right: auto;text-align: center;"><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9478001176347002"
     crossorigin="anonymous"></script>
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-9478001176347002"
     data-ad-slot="4670569211"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></div><h2 class="wp-block-heading jinr-heading d--bold">トレイト境界を利用した型の制約</h2>



<p class="wp-block-paragraph">ジェネリックな関数は便利ですが、任意の型でも受け入れることができてしまいます。そのため、関数内で想定していない型が渡されると、コンパイルエラーとなります。</p>



<p class="wp-block-paragraph">Rust では「<span class="jinr-d--text-color d--marker1 d--bold">トレイト</span>」という仕組みを使って型の振る舞いを定義できます。ジェネリックな関数では、型パラメータがどのトレイトを実装しているかを指定することで制約を加えることができ、これを「<span class="jinr-d--text-color d--marker1 d--bold">トレイト境界</span>」と呼びます。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="rust" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">use std::fmt::Display;

enum MyResult&lt;S, F> {
    Success(S),    // Result
    Failure(F, String),  // FailureCode と エラー文字列
    Uncertainty,
}

// トレイト境界を指定したチェック関数
fn check_result&lt;S, F> (result: &amp;MyResult&lt;S, F>) 
where S: Display, F: Display
{
    match result {
        MyResult::Success(code) => println!("Success: {}", code),
        MyResult::Failure(code, error) => println!("Failure: {} detail: {}", code, error),
        MyResult::Uncertainty => println!("Uncertain Result")
    }
}

fn main() {
    let mut result = MyResult::Success::&lt;i32, u16>(10);
    check_result(&amp;result);

    result = MyResult::Failure(1, "Error1".to_string());
    check_result(&amp;result);
    
    result = MyResult::Uncertainty;
    check_result(&amp;result);
}
</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
Success: 10
Failure: 1 detail: Error1
Uncertain Result</pre>



<p class="wp-block-paragraph">上記の <code>check_result</code> 関数では、結果の形式を <code>match</code> で判定して <code>println</code> で出力していますが、その中で <code>{}</code> を指定しています。<code>{}</code> に値を埋め込むには、その型が <code>Display</code> トレイトを実装している必要があります。</p>



<p class="wp-block-paragraph"> <code>S</code>、 <code>F</code> という型パラメータが <code>Display</code> トレイトを実装していることを <code>where</code> で指定しています。「<code>fn check_result&lt;S: Display, F: Display&gt;()</code> 」と指定することも可能です。 なお、複数のトレイトを実装している必要がある場合は「<code>Display + Debug</code>」のように「<code>+</code>」でつなげていきます。</p>



<p class="wp-block-paragraph">このようにすることでジェネリックの汎用性を使いつつ、型の制約を入れることで安全な処理を設計することが可能となります。</p>



<section class="wp-block-jinr-blocks-iconbox b--jinr-block b--jinr-iconbox"><div class="d--simple-iconbox6 ">
			<i class="jif jin-ifont-v2books" aria-hidden="true"></i>
			<div class="a--jinr-iconbox">
<p class="wp-block-paragraph">トレイトの基本については以下を参考にしてください。</p>



<p class="wp-block-paragraph"><a href="https://rust-tech.nkhn37.net/rust-trait-basic/" target="_blank" rel="noreferrer noopener">【Rust入門】トレイトの基本を分かりやすく解説</a></p>
</div>
		</div></section>



<h2 class="wp-block-heading jinr-heading d--bold">ジェネリックとゼロコスト抽象化</h2>



<p class="wp-block-paragraph">Rust のジェネリックは <span class="jinr-d--text-color d--marker1 d--bold">ゼロコスト抽象化（zero-cost abstraction）</span> を実現しています。これは「抽象化を使っても、コンパイル後の実行時コストは手書きのコードと変わらない」という考え方です。プログラミング言語によっては、実行時にどの型かを判別して振る舞いを切り替えるためにパフォーマンスに影響が出る場合があります。</p>



<p class="wp-block-paragraph">Rust のジェネリックは「<strong>モノモーフィゼーション（Monomorphization）</strong>」という仕組みで処理されます。これはコンパイル時に、ジェネリック関数や型が実際に使われる具体的な型に展開して最適化されたコードを生成する仕組みです。</p>



<p class="wp-block-paragraph">例えば、上記でも紹介した <code>identity</code> 関数を考えます。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="rust" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">// 基本的なジェネリック関数
fn identity&lt;T>(x: T) -> T {
    x
}

fn main() {
    // identity 関数の使用
    let a = identity(10);
    let b = identity(20.5);
}</pre>



<p class="wp-block-paragraph">コンパイル後には、<code>identity&lt;i32&gt;</code> と <code>identity&lt;f64&gt;</code> という型ごとの別々の関数が具体的に生成されます。そのため、実行時に型を判別して振る舞いを切り替える余分な処理が発生せず、最初から <code>i32</code> 専用関数と <code>f64</code> 専用関数を書いたかのようなパフォーマンスが得られます。</p>



<p class="wp-block-paragraph">この仕組みにより Rust は抽象化と高パフォーマンスを両立させています。「分かりやすく安全なコードを書きつつ、速度も妥協しない」という Rust の大きな強みが、ジェネリックのゼロコスト抽象化により支えられています。</p>



<div id="nkhn3-1937549239" class="nkhn3--2 nkhn3-entity-placement" style="margin-left: auto;margin-right: auto;text-align: center;"><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9478001176347002"
     crossorigin="anonymous"></script>
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-9478001176347002"
     data-ad-slot="4670569211"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></div><h2 class="wp-block-heading jinr-heading d--bold">まとめ</h2>



<p class="wp-block-paragraph">この記事では、Rust におけるジェネリックの基本について解説しました。</p>



<ul class="wp-block-list jinr-list">
<li>ジェネリックな関数を使うと、型に依存しない柔軟な関数を定義できます。</li>



<li>ジェネリックな構造体や列挙体 により、さまざまなデータ型を扱える再利用性の高い型を設計できます。</li>



<li>Rust のジェネリックは、モノモーフィゼーションによりコンパイル時に具体的な型に展開されるゼロコスト抽象化を実現しており、抽象化しても実行時のオーバーヘッドは発生しない高速な処理を実現できます。</li>
</ul>



<p class="wp-block-paragraph">ジェネリックを使うことで、安全で読みやすく、高いパフォーマンスを両立できるのが Rust の大きな特徴です。</p>



<section class="wp-block-jinr-blocks-simplebox b--jinr-block-container"><div class="b--jinr-block b--jinr-box d--heading-box8  "><div class="a--simple-box-title d--bold">ソースコード</div><div class="c--simple-box-inner">
<p class="wp-block-paragraph">上記で紹介しているソースコードについては <a href="https://github.com/nkhn37/rust-tech-sample-source/tree/main/rust-basic/generics" target="_blank" rel="noreferrer noopener">GitHub</a> にて公開しています。参考にしていただければと思います。</p>
</div></div></section>


<section class="b--jinr-block b--jinr-blogcard d--blogcard-hover-up d--blogcard-style1 d--blogcard-mysite t--round "><div class="a--blogcard-label ef">あわせて読みたい</div><a class="o--blogcard-link t--round" href="https://rust-tech.nkhn37.net/rust-programming-basics/"><div class="c--blogcard-image"><img decoding="async" class="a--blogcard-img-src" width="128" height="72" src="https://rust-tech.nkhn37.net/wp-content/uploads/2025/08/77e7c51961993fb9cb96c02a2311436d-320x180.jpg" alt="Rust プログラミング入門" /></div><div class="a--blogcard-title d--bold">Rust プログラミング入門</div></a></section><div id="nkhn3-4042512988" class="nkhn3-multiplex nkhn3-entity-placement" style="margin-left: auto;margin-right: auto;text-align: center;"><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9478001176347002"
     crossorigin="anonymous"></script>
<ins class="adsbygoogle"
     style="display:block"
     data-ad-format="autorelaxed"
     data-ad-client="ca-pub-9478001176347002"
     data-ad-slot="8958649655"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></div>]]></content:encoded>
					
					<wfw:commentRss>https://rust-tech.nkhn37.net/rust-generic-func-type/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Disk: Enhanced  を使用したページ キャッシュ

Served from: rust-tech.nkhn37.net @ 2026-06-05 04:43:05 by W3 Total Cache
-->