<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>http://mochiuwiki.e2.valueserver.jp/index.php?action=history&amp;feed=atom&amp;title=Rust%E3%81%AE%E5%9F%BA%E7%A4%8E_-_%E6%9D%A1%E4%BB%B6%E5%88%86%E5%B2%90</id>
	<title>Rustの基礎 - 条件分岐 - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="http://mochiuwiki.e2.valueserver.jp/index.php?action=history&amp;feed=atom&amp;title=Rust%E3%81%AE%E5%9F%BA%E7%A4%8E_-_%E6%9D%A1%E4%BB%B6%E5%88%86%E5%B2%90"/>
	<link rel="alternate" type="text/html" href="http://mochiuwiki.e2.valueserver.jp/index.php?title=Rust%E3%81%AE%E5%9F%BA%E7%A4%8E_-_%E6%9D%A1%E4%BB%B6%E5%88%86%E5%B2%90&amp;action=history"/>
	<updated>2026-09-02T14:19:37Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://mochiuwiki.e2.valueserver.jp/index.php?title=Rust%E3%81%AE%E5%9F%BA%E7%A4%8E_-_%E6%9D%A1%E4%BB%B6%E5%88%86%E5%B2%90&amp;diff=13601&amp;oldid=prev</id>
		<title>Wiki: ページの作成:「== 概要 == Rustのif文は式 (expression) であり、値を返すことができる。&lt;br&gt; 条件式は波括弧{}で囲まれたブロックで記述する。&lt;br&gt; &lt;br&gt; 条件式に括弧()を付ける必要はないが、条件式は必ずbool型でなければならない。&lt;br&gt; &lt;br&gt;&lt;br&gt;  == if式 / if-else式の条件分岐 == 条件式Aが成立するなら実行コードAが実行され、成立しないならば実行コードBが実行される。&lt;br&gt;  &lt;s…」</title>
		<link rel="alternate" type="text/html" href="http://mochiuwiki.e2.valueserver.jp/index.php?title=Rust%E3%81%AE%E5%9F%BA%E7%A4%8E_-_%E6%9D%A1%E4%BB%B6%E5%88%86%E5%B2%90&amp;diff=13601&amp;oldid=prev"/>
		<updated>2025-11-29T16:25:25Z</updated>

		<summary type="html">&lt;p&gt;ページの作成:「== 概要 == Rustのif文は式 (expression) であり、値を返すことができる。&amp;lt;br&amp;gt; 条件式は波括弧{}で囲まれたブロックで記述する。&amp;lt;br&amp;gt; &amp;lt;br&amp;gt; 条件式に括弧()を付ける必要はないが、条件式は必ずbool型でなければならない。&amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;  == if式 / if-else式の条件分岐 == 条件式Aが成立するなら実行コードAが実行され、成立しないならば実行コードBが実行される。&amp;lt;br&amp;gt;  &amp;lt;s…」&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== 概要 ==&lt;br /&gt;
Rustのif文は式 (expression) であり、値を返すことができる。&amp;lt;br&amp;gt;&lt;br /&gt;
条件式は波括弧{}で囲まれたブロックで記述する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
条件式に括弧()を付ける必要はないが、条件式は必ずbool型でなければならない。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== if式 / if-else式の条件分岐 ==&lt;br /&gt;
条件式Aが成立するなら実行コードAが実行され、成立しないならば実行コードBが実行される。&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot;&amp;gt;&lt;br /&gt;
 if 条件式A {&lt;br /&gt;
    実行コードA&lt;br /&gt;
 }&lt;br /&gt;
 else {&lt;br /&gt;
    実行コードB&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
    let hungry = true;&lt;br /&gt;
    if hungry {&lt;br /&gt;
       println!(&amp;quot;I want to eat something!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
       println!(&amp;quot;I am full.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // 出力&lt;br /&gt;
 I want to eat something!&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Rustのif式は値を返すことができるため、let文で変数に代入することができる。&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
    let hungry = true;&lt;br /&gt;
    let message = if hungry {&lt;br /&gt;
       &amp;quot;I want to eat something!&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
       &amp;quot;I am full.&amp;quot;&lt;br /&gt;
    };&lt;br /&gt;
    println!(&amp;quot;{}&amp;quot;, message);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // 出力&lt;br /&gt;
 I want to eat something!&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== else if式を使用した条件分岐 ==&lt;br /&gt;
条件式Aが成立すれば実行コードA、成立していなければ条件式Bが検証され成立していれば実行コードB、いずれの条件も成立していなければ実行コードCが実行される。&amp;lt;br&amp;gt;&lt;br /&gt;
検証したい条件が更に必要であれば、else if式を必要な分だけ記述する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Rustにはswitch文の代わりにmatch式という強力なパターンマッチング機能がある。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;複数の値を比較する場合は、match式の使用を推奨する。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot;&amp;gt;&lt;br /&gt;
 if 条件式A {&lt;br /&gt;
    実行コードA&lt;br /&gt;
 }&lt;br /&gt;
 else if 条件式B {&lt;br /&gt;
    実行コードB&lt;br /&gt;
 }&lt;br /&gt;
 else {&lt;br /&gt;
    実行コードC&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
    let code = &amp;quot;Swift&amp;quot;;&lt;br /&gt;
    if code == &amp;quot;Python&amp;quot; {&lt;br /&gt;
       println!(&amp;quot;I want to learn Django!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    else if code == &amp;quot;PHP&amp;quot; {&lt;br /&gt;
       println!(&amp;quot;I want to learn WordPress!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    else if code == &amp;quot;Swift&amp;quot; {&lt;br /&gt;
       println!(&amp;quot;I want to learn how to make iPhone apps.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
       println!(&amp;quot;I&amp;#039;m going out for a walk.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // 出力&lt;br /&gt;
 I want to learn how to make iPhone apps.&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== match式を使用した条件分岐 ==&lt;br /&gt;
Rustでは、switch文の代わりに &amp;lt;code&amp;gt;match&amp;lt;/code&amp;gt; 式を使用する。&amp;lt;br&amp;gt;&lt;br /&gt;
match式は、全てのパターンを網羅する必要がある。&amp;lt;br&amp;gt;&lt;br /&gt;
全てのパターンを列挙しない場合は、ワイルドカードパターン(&amp;lt;code&amp;gt;_&amp;lt;/code&amp;gt; : C/C++のdefault)を使用する。&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
    let code = &amp;quot;Swift&amp;quot;;&lt;br /&gt;
    match code {&lt;br /&gt;
       &amp;quot;Python&amp;quot; =&amp;gt; println!(&amp;quot;I want to learn Django!&amp;quot;),&lt;br /&gt;
       &amp;quot;PHP&amp;quot; =&amp;gt; println!(&amp;quot;I want to learn WordPress!&amp;quot;),&lt;br /&gt;
       &amp;quot;Swift&amp;quot; =&amp;gt; println!(&amp;quot;I want to learn how to make iPhone apps.&amp;quot;),&lt;br /&gt;
       _ =&amp;gt; println!(&amp;quot;I&amp;#039;m going out for a walk.&amp;quot;),&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // 出力&lt;br /&gt;
 I want to learn how to make iPhone apps.&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
match式も値を返すことができる。&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
    let code = &amp;quot;Swift&amp;quot;;&lt;br /&gt;
    let message = match code {&lt;br /&gt;
       &amp;quot;Python&amp;quot; =&amp;gt; &amp;quot;I want to learn Django!&amp;quot;,&lt;br /&gt;
       &amp;quot;PHP&amp;quot; =&amp;gt; &amp;quot;I want to learn WordPress!&amp;quot;,&lt;br /&gt;
       &amp;quot;Swift&amp;quot; =&amp;gt; &amp;quot;I want to learn how to make iPhone apps.&amp;quot;,&lt;br /&gt;
       _ =&amp;gt; &amp;quot;I&amp;#039;m going out for a walk.&amp;quot;,&lt;br /&gt;
    };&lt;br /&gt;
    println!(&amp;quot;{}&amp;quot;, message);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // 出力&lt;br /&gt;
 I want to learn how to make iPhone apps.&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
複数のパターンを同時にマッチさせる場合は、&amp;lt;code&amp;gt;|&amp;lt;/code&amp;gt; 演算子を使用する。&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
    let code = &amp;quot;Python&amp;quot;;&lt;br /&gt;
    match code {&lt;br /&gt;
       &amp;quot;Python&amp;quot; | &amp;quot;Ruby&amp;quot; =&amp;gt; println!(&amp;quot;Script language!&amp;quot;),&lt;br /&gt;
       &amp;quot;C&amp;quot; | &amp;quot;C++&amp;quot; | &amp;quot;Rust&amp;quot; =&amp;gt; println!(&amp;quot;Systems programming language!&amp;quot;),&lt;br /&gt;
       _ =&amp;gt; println!(&amp;quot;Other language!&amp;quot;),&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // 出力&lt;br /&gt;
 Script language!&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
範囲を使用したパターンマッチも可能である。&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
    let number = 13;&lt;br /&gt;
    match number {&lt;br /&gt;
       1..=10 =&amp;gt; println!(&amp;quot;1から10の範囲内&amp;quot;),&lt;br /&gt;
       11..=20 =&amp;gt; println!(&amp;quot;11から20の範囲内&amp;quot;),&lt;br /&gt;
       _ =&amp;gt; println!(&amp;quot;範囲外&amp;quot;),&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // 出力&lt;br /&gt;
 11から20の範囲内&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== if文の入れ子構造 ==&lt;br /&gt;
条件の変数を2つ用意(複数条件)して、if式を入れ子構造で記述することができる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Rustでは波括弧{}でブロックが明確に定義されているため、インデントは任意だが、可読性のために適切にインデントすることが推奨される。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
    let code = &amp;quot;Swift&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
    if code == &amp;quot;Python&amp;quot; {&lt;br /&gt;
       println!(&amp;quot;I want to learn Django!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
       if code == &amp;quot;PHP&amp;quot; {&lt;br /&gt;
          println!(&amp;quot;I want to learn WordPress!&amp;quot;);&lt;br /&gt;
       }&lt;br /&gt;
       else {&lt;br /&gt;
          if code == &amp;quot;Swift&amp;quot; {&lt;br /&gt;
             println!(&amp;quot;I want to learn how to make iPhone apps.&amp;quot;);&lt;br /&gt;
          }&lt;br /&gt;
          else {&lt;br /&gt;
             println!(&amp;quot;I&amp;#039;m going out for a walk.&amp;quot;);&lt;br /&gt;
          }&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // 出力&lt;br /&gt;
 I want to learn how to make iPhone apps.&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
ただし、入れ子構造が深くなる場合は、else if式を使用した方が可読性が高い。&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
    let code = &amp;quot;Swift&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
    if code == &amp;quot;Python&amp;quot; {&lt;br /&gt;
       println!(&amp;quot;I want to learn Django!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    else if code == &amp;quot;PHP&amp;quot; {&lt;br /&gt;
       println!(&amp;quot;I want to learn WordPress!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    else if code == &amp;quot;Swift&amp;quot; {&lt;br /&gt;
       println!(&amp;quot;I want to learn how to make iPhone apps.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
       println!(&amp;quot;I&amp;#039;m going out for a walk.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // 出力&lt;br /&gt;
 I want to learn how to make iPhone apps.&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 論理演算子を使用した複数条件 ==&lt;br /&gt;
複数の条件を組み合わせる場合は、論理演算子を使用する。&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;amp;&amp;amp;&lt;br /&gt;
*: AND演算子 (両方の条件が真の場合に真)&lt;br /&gt;
* ||&lt;br /&gt;
*: OR演算子 (いずれかの条件が真の場合に真)&lt;br /&gt;
* !&lt;br /&gt;
*: NOT演算子 (条件を反転)&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
    let hungry = true;&lt;br /&gt;
    let has_money = true;&lt;br /&gt;
 &lt;br /&gt;
    if hungry &amp;amp;&amp;amp; has_money {&lt;br /&gt;
       println!(&amp;quot;レストランに行きましょう！&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    else if hungry &amp;amp;&amp;amp; !has_money {&lt;br /&gt;
       println!(&amp;quot;家で食事をしましょう。&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
       println!(&amp;quot;まだ食事の時間ではありません。&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // 出力&lt;br /&gt;
 レストランに行きましょう！&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
    let age = 20;&lt;br /&gt;
    let has_license = true;&lt;br /&gt;
 &lt;br /&gt;
    if age &amp;gt;= 18 || has_license {&lt;br /&gt;
       println!(&amp;quot;運転できます。&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
       println!(&amp;quot;運転できません。&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // 出力&lt;br /&gt;
 運転できます。&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== if let式による簡潔なパターンマッチ ==&lt;br /&gt;
Option型やResult型などの値を扱う場合、&amp;lt;code&amp;gt;if let&amp;lt;/code&amp;gt; 式を使用すると簡潔に記述できる。&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
    let some_value: Option&amp;lt;i32&amp;gt; = Some(10);&lt;br /&gt;
 &lt;br /&gt;
    if let Some(x) = some_value {&lt;br /&gt;
       println!(&amp;quot;値は{}です&amp;quot;, x);&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
       println!(&amp;quot;値はありません&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // 出力&lt;br /&gt;
 値は10です&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
これは、以下に示すmatch式と同等である。&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
    let some_value: Option&amp;lt;i32&amp;gt; = Some(10);&lt;br /&gt;
 &lt;br /&gt;
    match some_value {&lt;br /&gt;
       Some(x) =&amp;gt; println!(&amp;quot;値は{}です&amp;quot;, x),&lt;br /&gt;
       None =&amp;gt; println!(&amp;quot;値はありません&amp;quot;),&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // 出力&lt;br /&gt;
 値は10です&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
[[カテゴリ:Rust]]&lt;/div&gt;</summary>
		<author><name>Wiki</name></author>
	</entry>
</feed>