82568


Rust初心者です。Rust By Exampleの[構造体の章](https://doc.rust-jp.rs/rust-by-example-
ja/custom_types/structs.html) に、

> structというキーワードを用いて作成できる構造体には3種類あります。
>
>   * タプル。（ほとんどの場合は名前付きタプル）
>   * クラシックなC言語スタイルの構造体。
>   * ユニット。これはフィールドを持たず、ジェネリック型を扱う際に有効です。
>

と書いてあり、このあとにサンプルコードも載っていたのですが、「名前付きタプル」とはどれなのかがわかりませんでした。  
わかる方がいらっしゃいましたら教えてください。


CC BY-SA 4.0
2021-09-18T15:18:37.120
82567
2021-10-07T08:05:04.847
47651
question
rust
Rust By Exampleに書いてある「名前付きタプル」とは何ですか？


[英語版](https://doc.rust-lang.org/stable/rust-by-
example/custom_types/structs.html)は以下のようになっています:

> There are three types of structures ("structs") that can be created using
> the struct keyword:
>
>   * Tuple structs, which are, basically, named tuples.
>   * The classic C structs
>   * Unit structs, which are field-less, are useful for generics.
>

該当部分" _Tuple structs, which are, basically, named tuples._
"は「タプル構造体（おおむね名前のついたタプルのようなもの）」くらいの意味です。  
つまり、「タプル構造体は、普通のタプルに名前がついたようなもの」ということです。


CC BY-SA 4.0
2021-09-18T16:31:57.650
82568
2021-09-18T16:31:57.650
8826
82567
answer


名前付きでない、普通のタプルと比較すると分かりやすいかなと思います。

サンプルコード中では、以下が名前付きのタプルです。`Pair` という名前のついたタプル型と見なせる構造体になっています。

[code]

    struct Pair(i32, f32);
    
[/code]

名前付きでない普通のタプルは、カッコの中で値を並べたものです。たとえば以下のコードにおける `(i32, f32)`
は名前のない単なるタプル型ですし、`(42, 3.14)` というのはタプル型の値です。

[code]

    let t: (i32, f32) = (42, 3.14);
    
[/code]

Rust by Example としては以下のページを参照ください: <https://doc.rust-jp.rs/rust-by-example-
ja/primitives/tuples.html>

これに加えて、クラシックな構造体を使うことでフィールドにも名前がついたタプルのように扱うこともできます。こちらのことを名前付きタプル (tuple with
named fields) と呼ぶこともあります。


CC BY-SA 4.0
2021-09-19T03:17:44.027
82573
2021-09-19T07:49:00.623
2021-09-19T07:49:00.623
19110
19110
82567
answer


コメント見ると, 微妙な齟齬ありそうなので, 一応回答として記します  
([もとの英語のページ](https://doc.rust-lang.org/rust-by-
example/custom_types/structs.html)の, 内容のみを読み取り, 表現を少し無視した形が一番よさそうな？)

* * *

記されてる内容からすると …  
構造体(structures) を作成(can be created) する時, `struct` キーワードに 構造体名(struct’s name)
が続き, 3つの段階で指定できる

  * (normal(？) structs): 各データに名前(項目名) が付いたもの
  * tuple structs: 名前付きフィールド(名前付き項目)でないもの ([without Named Fields](https://doc.rust-lang.org/book/ch05-01-defining-structs.html#using-tuple-structs-without-named-fields-to-create-different-types))
  * unit-like structs: フィールド(項目) のないもの

要は, すべて指定するか, 項目名省略するか, 項目そのもの省略するか … の違い

"tuple structs" と呼ばれるている(called tuple structs) ものも, 普通の Tupleに似てる, 程度で,
「Tupleと言えばこれ」という訳ではないし  
"The classic C structs" という表現は, 「よく見かける C言語のそれに似てるね」程度の理解でよいかも  
(何が classic なのか不明)

ということで  
named_tuple とは記されていない模様, 「名前付きタプル」は言葉尻つかまえたようなもの  
正しくは  
「つまり(要するに), 名前(構造体名)の付いた Tuple(のような)」(basically, named tuples) であり

named_tuple として, 一番近そうなのは [通常の structs](https://doc.rust-
lang.org/book/ch05-01-defining-structs.html#defining-and-instantiating-
structs)


CC BY-SA 4.0
2021-10-07T08:05:04.847
82936
2021-10-07T08:05:04.847
43025
82567
answer