<?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_-_%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89</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_-_%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89"/>
	<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_-_%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89&amp;action=history"/>
	<updated>2026-07-20T04:57:03Z</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_-_%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89&amp;diff=13611&amp;oldid=prev</id>
		<title>Wiki: ページの作成:「== 概要 == メソッドは、よく使用する処理を手軽に実行することができるものである。&lt;br&gt; &lt;br&gt; メソッドを呼び出すには、数値や文字列などの任意の引数を用意して実行する。&lt;br&gt; そして、実行した結果を戻り値として返す。&lt;br&gt; このメソッドの結果を、他の処理や演算に利用することもできる。&lt;br&gt; &lt;br&gt; Rustには、標準ライブラリに多くのメソッドが用意…」</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_-_%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89&amp;diff=13611&amp;oldid=prev"/>
		<updated>2025-11-29T19:02:53Z</updated>

		<summary type="html">&lt;p&gt;ページの作成:「== 概要 == メソッドは、よく使用する処理を手軽に実行することができるものである。&amp;lt;br&amp;gt; &amp;lt;br&amp;gt; メソッドを呼び出すには、数値や文字列などの任意の引数を用意して実行する。&amp;lt;br&amp;gt; そして、実行した結果を戻り値として返す。&amp;lt;br&amp;gt; このメソッドの結果を、他の処理や演算に利用することもできる。&amp;lt;br&amp;gt; &amp;lt;br&amp;gt; Rustには、標準ライブラリに多くのメソッドが用意…」&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== 概要 ==&lt;br /&gt;
メソッドは、よく使用する処理を手軽に実行することができるものである。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
メソッドを呼び出すには、数値や文字列などの任意の引数を用意して実行する。&amp;lt;br&amp;gt;&lt;br /&gt;
そして、実行した結果を戻り値として返す。&amp;lt;br&amp;gt;&lt;br /&gt;
このメソッドの結果を、他の処理や演算に利用することもできる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Rustには、標準ライブラリに多くのメソッドが用意されている。&amp;lt;br&amp;gt;&lt;br /&gt;
Rustの標準ライブラリは、[https://doc.rust-lang.org/std/ Rustの公式Webサイト] で確認することができる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== メソッド ==&lt;br /&gt;
==== メソッドの定義 ====&lt;br /&gt;
メソッドを作成するには関数名が必要である。&amp;lt;br&amp;gt;&lt;br /&gt;
Rustのメソッド名は、スネークケースで記述するのが慣習である。&amp;lt;br&amp;gt;&lt;br /&gt;
* 小文字の英字 (a-z)&lt;br /&gt;
* 数字 (0-9)&amp;lt;br&amp;gt;&amp;lt;u&amp;gt;※ただし、関数の先頭文字としては使用できない。&amp;lt;/u&amp;gt;&lt;br /&gt;
* アンダースコア (_)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== 関数の作成 ====&lt;br /&gt;
関数を定義するには、&amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; キーワードを使用する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
fnに続けて関数名を記述した後、丸括弧()を記述する。&amp;lt;br&amp;gt;&lt;br /&gt;
丸括弧()の中には引数の定義を入れる場合もある。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
戻り値の型がある場合は、&amp;lt;code&amp;gt;-&amp;gt;&amp;lt;/code&amp;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 関数名([引数名: 型, ...]) [-&amp;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;
以下の例では、Hello!と出力するsay_hello関数である。&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot;&amp;gt;&lt;br /&gt;
 fn say_hello() {&lt;br /&gt;
    println!(&amp;quot;Hello!&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 fn main() {&lt;br /&gt;
    say_hello();&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // 出力&lt;br /&gt;
 Hello!&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
上記のsay_hello関数を変更して、引数に名前を入れてHello! &amp;lt;名前&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 say_hello(name: &amp;amp;str) {&lt;br /&gt;
    println!(&amp;quot;Hello! {}&amp;quot;, name);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 fn main() {&lt;br /&gt;
    say_hello(&amp;quot;Rust&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // 出力&lt;br /&gt;
 Hello! Rust&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&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 s = &amp;quot;Rust&amp;quot;;&lt;br /&gt;
    println!(&amp;quot;{}&amp;quot;, s.len());&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // 出力&lt;br /&gt;
 4&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;※注意&amp;lt;/u&amp;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;u&amp;gt;メソッド名は、スネークケースで記述するのが慣習である。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 引数 ==&lt;br /&gt;
==== 位置引数 ====&lt;br /&gt;
メソッドの引数は複数指定できる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&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 dinner_menu(food: &amp;amp;str, drink: &amp;amp;str, dessert: &amp;amp;str) {&lt;br /&gt;
    println!(&amp;quot;夕食は{}を用意しています。&amp;quot;, food);&lt;br /&gt;
    println!(&amp;quot;飲み物は{}をおすすめします。&amp;quot;, drink);&lt;br /&gt;
    println!(&amp;quot;デザートに{}をどうぞ。&amp;quot;, dessert);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 fn main() {&lt;br /&gt;
    dinner_menu(&amp;quot;定食&amp;quot;, &amp;quot;お茶&amp;quot;, &amp;quot;ゼリー&amp;quot;);&lt;br /&gt;
 }&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;u&amp;gt;※注意&amp;lt;/u&amp;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;u&amp;gt;引数は常に位置によって対応付けられる。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== デフォルト引数 ====&lt;br /&gt;
Rustには、デフォルト引数の機能は存在しない。&amp;lt;br&amp;gt;&lt;br /&gt;
しかし、Option型やメソッドのオーバーロードの代替として、複数のメソッドを定義することで同様の効果を得ることができる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
以下の例では、Option型を使用してデフォルト値を実現している。&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot;&amp;gt;&lt;br /&gt;
 fn dinner_menu(food: Option&amp;lt;&amp;amp;str&amp;gt;, drink: Option&amp;lt;&amp;amp;str&amp;gt;, dessert: Option&amp;lt;&amp;amp;str&amp;gt;) {&lt;br /&gt;
    let food = food.unwrap_or(&amp;quot;定食&amp;quot;);&lt;br /&gt;
    let drink = drink.unwrap_or(&amp;quot;お茶&amp;quot;);&lt;br /&gt;
    let dessert = dessert.unwrap_or(&amp;quot;ゼリー&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
    println!(&amp;quot;夕食は{}を用意しています。&amp;quot;, food);&lt;br /&gt;
    println!(&amp;quot;飲み物は{}をおすすめします。&amp;quot;, drink);&lt;br /&gt;
    println!(&amp;quot;デザートに{}をどうぞ。&amp;quot;, dessert);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 fn main() {&lt;br /&gt;
    // 全てデフォルト値を使用&lt;br /&gt;
    dinner_menu(None, None, None);&lt;br /&gt;
 &lt;br /&gt;
    // 一部を指定&lt;br /&gt;
    dinner_menu(Some(&amp;quot;ハンバーグ&amp;quot;), Some(&amp;quot;赤ワイン&amp;quot;), Some(&amp;quot;シャーベット&amp;quot;));&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // 出力&lt;br /&gt;
 夕食は定食を用意しています。&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;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot;&amp;gt;&lt;br /&gt;
 struct DinnerMenu {&lt;br /&gt;
    food: String,&lt;br /&gt;
    drink: String,&lt;br /&gt;
    dessert: String,&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 impl DinnerMenu {&lt;br /&gt;
    fn new() -&amp;gt; Self {&lt;br /&gt;
       DinnerMenu {&lt;br /&gt;
          food: &amp;quot;定食&amp;quot;.to_string(),&lt;br /&gt;
          drink: &amp;quot;お茶&amp;quot;.to_string(),&lt;br /&gt;
          dessert: &amp;quot;ゼリー&amp;quot;.to_string(),&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    fn food(mut self, food: &amp;amp;str) -&amp;gt; Self {&lt;br /&gt;
       self.food = food.to_string();&lt;br /&gt;
       self&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    fn drink(mut self, drink: &amp;amp;str) -&amp;gt; Self {&lt;br /&gt;
       self.drink = drink.to_string();&lt;br /&gt;
       self&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    fn dessert(mut self, dessert: &amp;amp;str) -&amp;gt; Self {&lt;br /&gt;
       self.dessert = dessert.to_string();&lt;br /&gt;
       self&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    fn show(&amp;amp;self) {&lt;br /&gt;
       println!(&amp;quot;夕食は{}を用意しています。&amp;quot;, self.food);&lt;br /&gt;
       println!(&amp;quot;飲み物は{}をおすすめします。&amp;quot;, self.drink);&lt;br /&gt;
       println!(&amp;quot;デザートに{}をどうぞ。&amp;quot;, self.dessert);&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 fn main() {&lt;br /&gt;
    // デフォルト値を使用&lt;br /&gt;
    DinnerMenu::new().show();&lt;br /&gt;
 &lt;br /&gt;
    // 一部を変更&lt;br /&gt;
    DinnerMenu::new()&lt;br /&gt;
       .food(&amp;quot;ハンバーグ&amp;quot;)&lt;br /&gt;
       .drink(&amp;quot;赤ワイン&amp;quot;)&lt;br /&gt;
       .show();&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;
== 可変長引数 ==&lt;br /&gt;
Rustには、組み込みの可変長引数の機能は存在しない。&amp;lt;br&amp;gt;&lt;br /&gt;
しかし、スライス、ベクター、マクロを使用することにより、同様の効果を得ることができる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&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 dinner_menu(items: &amp;amp;[&amp;amp;str]) {&lt;br /&gt;
    for item in items {&lt;br /&gt;
       println!(&amp;quot;{}&amp;quot;, item);&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 fn main() {&lt;br /&gt;
    let menu = [&amp;quot;定食&amp;quot;, &amp;quot;お茶&amp;quot;, &amp;quot;ゼリー&amp;quot;];&lt;br /&gt;
    dinner_menu(&amp;amp;menu);&lt;br /&gt;
 }&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;
==== ベクタを使用した可変長引数 ====&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 dinner_menu(items: Vec&amp;lt;String&amp;gt;) {&lt;br /&gt;
    for item in items {&lt;br /&gt;
       println!(&amp;quot;{}&amp;quot;, item);&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 fn main() {&lt;br /&gt;
    let menu = vec![&amp;quot;定食&amp;quot;.to_string(), &amp;quot;お茶&amp;quot;.to_string(), &amp;quot;ゼリー&amp;quot;.to_string()];&lt;br /&gt;
    dinner_menu(menu);&lt;br /&gt;
 }&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;
==== マクロを使用した可変長引数 ====&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;
 macro_rules! print_items {&lt;br /&gt;
    ($($item:expr),*) =&amp;gt; {&lt;br /&gt;
       $(&lt;br /&gt;
          println!(&amp;quot;{}&amp;quot;, $item);&lt;br /&gt;
       )*&lt;br /&gt;
    };&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 fn main() {&lt;br /&gt;
    print_items!(&amp;quot;定食&amp;quot;, &amp;quot;お茶&amp;quot;, &amp;quot;ゼリー&amp;quot;);&lt;br /&gt;
 }&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;
== 関数ポインタとクロージャ ==&lt;br /&gt;
Rustでは、メソッドを変数に代入したり、メソッドの引数として関数を渡したり、メソッドの戻り値として関数を返すことができる。&amp;lt;br&amp;gt;&lt;br /&gt;
これには関数ポインタやクロージャを使用する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&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 hello() {&lt;br /&gt;
    println!(&amp;quot;Hello, Rust&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 fn callback_func(callback: fn()) {&lt;br /&gt;
    callback();&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 fn main() {&lt;br /&gt;
    callback_func(hello);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // 出力&lt;br /&gt;
 Hello, Rust&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&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 hello = || {&lt;br /&gt;
       println!(&amp;quot;Hello, Rust&amp;quot;);&lt;br /&gt;
    };&lt;br /&gt;
 &lt;br /&gt;
    let callback_func = |callback: fn()| {&lt;br /&gt;
       callback();&lt;br /&gt;
    };&lt;br /&gt;
 &lt;br /&gt;
    callback_func(|| println!(&amp;quot;Hello, Rust&amp;quot;));&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // 出力&lt;br /&gt;
 Hello, Rust&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;
Rustでは、メソッドの中で別のメソッドを定義することができる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
以下の例では、外側のメソッドとその中で定義される内側のメソッドを定義する。&amp;lt;br&amp;gt;&lt;br /&gt;
ここでは、外側のメソッド名をouter_func、内側のメソッド名をinner_funcとする。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
外側のメソッドでは、2つの引数を加算して、内側のメソッドでは、2つの引数を加えて10倍して、それを出力している。&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot;&amp;gt;&lt;br /&gt;
 fn outer_func(a: i32, b: i32) {&lt;br /&gt;
    fn inner_func(c: i32, d: i32) -&amp;gt; i32 {&lt;br /&gt;
       (c + d) * 10&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    let out_value = a + b;&lt;br /&gt;
    let in_value = inner_func(a, b);&lt;br /&gt;
 &lt;br /&gt;
    println!(&amp;quot;{} {} OutValue = {} InValue = {}&amp;quot;, a, b, out_value, in_value);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 fn main() {&lt;br /&gt;
    outer_func(3, 4);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // 出力&lt;br /&gt;
 3 4 OutValue = 7 InValue = 70&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;※注意&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;内側の関数は、外側の関数のスコープ内でのみ使用できる。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;内側の関数は、外側の関数の変数にアクセスできない。(クロージャを使用すればアクセス可能)&amp;lt;/u&amp;gt;&amp;lt;br&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>