6
6
<!-- between types, there’s a specific trait that you can implement, which then -->
7
7
<!-- overloads the operator. -->
8
8
Rustは制限された形式での演算子オーバーロードを提供しており、オーバーロード可能な演算子がいくつか存在します。
9
- 型同士の間の演算子をサポートするためのトレイトが存在し、それらを実装することで演算子をオーバーロードすることができます 。
9
+ 型同士の間の演算子をサポートするためのトレイトが存在し、それらを実装することで演算子をオーバーロードできます 。
10
10
11
11
<!-- For example, the `+` operator can be overloaded with the `Add` trait: -->
12
- 例えば 、 ` + ` の演算子は ` Add ` トレイトを利用することでオーバーロードすることができます :
12
+ たとえば 、 ` + ` の演算子は ` Add ` トレイトでオーバーロードできます :
13
13
14
14
``` rust
15
15
use std :: ops :: Add ;
@@ -40,21 +40,22 @@ fn main() {
40
40
41
41
<!-- In `main`, we can use `+` on our two `Point`s, since we’ve implemented -->
42
42
<!-- `Add<Output=Point>` for `Point`. -->
43
- ` main ` 中で、2つの ` Point ` に対して ` + ` を使うことができます、
43
+ ` main ` 中で、2つの ` Point ` に対して ` + ` を使えます。
44
44
これは ` Point ` に対して ` Add<Output=Point> ` を実装したためです。
45
45
46
46
<!-- There are a number of operators that can be overloaded this way, and all of -->
47
47
<!-- their associated traits live in the [`std::ops`][stdops] module. Check out its -->
48
48
<!-- documentation for the full list. -->
49
- 同じ方法でオーバーロード可能な演算子が多数あります、
49
+ 同じ方法でオーバーロード可能な演算子が多数あります。
50
50
それらに対応したトレイトは [ ` std::ops ` ] [ stdops ] モジュール内に存在します。
51
51
全てのオーバーロード可能な演算子と対応するトレイトについては [ ` std::ops ` ] [ stdops ] のドキュメントを読んで確認して下さい。
52
52
53
53
[ stdops ] : ../std/ops/index.html
54
54
55
55
<!-- Implementing these traits follows a pattern. Let’s look at [`Add`][add] in more -->
56
56
<!-- detail: -->
57
- それらのトレイトの実装はパターンに従います。 [ ` Add ` ] [ add ] トレイトを詳しく見ていきましょう:
57
+ それらのトレイトの実装は、ある一つのパターンに従います。
58
+ [ ` Add ` ] [ add ] トレイトを詳しく見ていきましょう:
58
59
59
60
``` rust
60
61
# mod foo {
@@ -71,8 +72,8 @@ pub trait Add<RHS = Self> {
71
72
<!-- There’s three types in total involved here: the type you `impl Add` for, `RHS`, -->
72
73
<!-- which defaults to `Self`, and `Output`. For an expression `let z = x + y`, `x` -->
73
74
<!-- is the `Self` type, `y` is the RHS, and `z` is the `Self::Output` type. -->
74
- 関連する3つの型が存在します: ` impl Add ` を実装するもの、 デフォルトが ` Self ` の ` RHS ` 、 そして ` Output ` 。
75
- 例えば 、式 ` let z = x + y ` においては ` x ` は ` Self ` 型 ` y ` は RHS、 ` z ` は ` Self::Output ` 型となります。
75
+ 関連する3つの型が存在します: ` impl Add ` を実装するもの、 デフォルトが ` Self ` の ` RHS ` 、 そして ` Output ` です 。
76
+ たとえば 、式 ` let z = x + y ` においては ` x ` は ` Self ` 型 ` y ` は RHS、 ` z ` は ` Self::Output ` 型となります。
76
77
77
78
``` rust
78
79
# struct Point ;
@@ -101,8 +102,7 @@ let x: f64 = p + 2i32;
101
102
102
103
<!-- Now that we know how operator traits are defined, we can define our `HasArea` -->
103
104
<!-- trait and `Square` struct from the [traits chapter][traits] more generically: -->
104
- オペレータトレイトがどのように定義されているかについて学びましたので、
105
- [ トレイトについての章] [ traits ] の ` HasArea ` トレイトと ` Square ` 構造体をさらに一般的に定義することができます:
105
+ オペレータトレイトがどのように定義されているかを学びましたので、[ トレイトについての章] [ traits ] の ` HasArea ` トレイトと ` Square ` 構造体をさらに一般的に定義できます:
106
106
107
107
[ traits ] : traits.html
108
108
@@ -137,10 +137,10 @@ fn main() {
137
137
}
138
138
```
139
139
140
- <!-- For `HasArea` and `Square`, we just declare a type parameter `T` and replace -->
140
+ <!-- For `HasArea` and `Square`, we declare a type parameter `T` and replace -->
141
141
<!-- `f64` with it. The `impl` needs more involved modifications: -->
142
142
` HasArea ` と ` Square ` について、型パラメータ ` T ` を宣言し ` f64 ` で置換しました。
143
- ` impl ` はさらに関連するモディフィケーションを必要とします :
143
+ ` impl ` はさらに関連する修正を必要とします :
144
144
145
145
``` ignore
146
146
impl<T> HasArea<T> for Square<T>
@@ -154,5 +154,6 @@ impl<T> HasArea<T> for Square<T>
154
154
<!-- Rust doesn't try to move `self.side` into the return value. -->
155
155
` area ` メソッドは辺を掛けることが可能なことを必要としています。
156
156
そのため型 ` T ` が ` std::ops::Mul ` を実装していなければならないと宣言しています。
157
- 上で説明した ` Add ` と同様に、` Mul ` は ` Output ` パラメータを取ります: 数値を掛け算した時に型が変わらないことを知っていますので、 ` Output ` も ` T ` と設定します。
157
+ 上で説明した ` Add ` と同様に、` Mul ` は ` Output ` パラメータを取ります:
158
+ 数値を掛け算した時に型が変わらないことを知っていますので、 ` Output ` も ` T ` と設定します。
158
159
また ` T ` は、Rustが ` self.side ` を返り値にムーブするのを試みないようにコピーをサポートしている必要があります。
0 commit comments