4
4
<!-- Now that we’ve discussed traits, let’s talk about a particular trait provided -->
5
5
<!-- by the Rust standard library, [`Drop`][drop]. The `Drop` trait provides a way -->
6
6
<!-- to run some code when a value goes out of scope. For example: -->
7
- トレイトについて学びましたので、Rustの標準ライブラリによって提供されている具体的なトレイト [ ` Drop ` ] [ drop ] について説明しましょう。
8
- ` Drop ` トレイトは値がスコープ外になった時にコードを実行する方法を提供します:
7
+ トレイトについて学びましたので、Rustの標準ライブラリによって提供されている具体的なトレイト [ ` Drop ` ] [ drop ] について説明しましょう。
8
+ ` Drop ` トレイトは値がスコープ外になった時にコードを実行する方法を提供します。
9
9
10
10
[ drop ] : ../std/ops/trait.Drop.html
11
11
@@ -32,13 +32,15 @@ fn main() {
32
32
<!-- run. `Drop` has one method, which is also called `drop()`. It takes a mutable -->
33
33
<!-- reference to `self`. -->
34
34
` x ` が ` main() ` の終わりでスコープ外になった時、 ` Drop ` のコードが実行されます。
35
- ` Drop ` は ` drop() ` と呼ばれるミュータブルな ` self ` への参照を引数に取るメソッドを持っています。
35
+ ` Drop ` にはメソッドは1つだけあり、それもまた ` drop() ` と呼ばれます。
36
+ ミュータブルな ` self ` への参照を引数に取ります。
36
37
37
38
<!-- That’s it! The mechanics of `Drop` are very simple, but there are some -->
38
39
<!-- subtleties. For example, values are dropped in the opposite order they are -->
39
40
<!-- declared. Here’s another example: -->
40
- これだけです! ` Drop ` のメカニズムは非常にシンプルです、しかし少しだけ注意すべき点があります。
41
- たとえば、値がドロップされる順序は、それらが定義された順序と反対の順序になります:
41
+ これだけです!
42
+ ` Drop ` のメカニズムは非常にシンプルですが、少しばかり注意があります。
43
+ たとえば、値がドロップされる順序は、それらが定義された順序と反対の順序になります。
42
44
43
45
``` rust
44
46
struct Firework {
@@ -58,25 +60,27 @@ fn main() {
58
60
```
59
61
60
62
<!-- This will output: -->
61
- このコードは以下の様な出力をします:
63
+ このコードは以下のように出力します。
62
64
63
65
``` text
64
66
BOOM times 100!!!
65
67
BOOM times 1!!!
66
68
```
67
69
68
- <!-- The TNT goes off before the firecracker does, because it was declared -->
70
+ <!-- The `tnt` goes off before the ` firecracker` does, because it was declared -->
69
71
<!-- afterwards. Last in, first out. -->
70
- TNTが爆竹(firecracker)が鳴る前に爆発してしまいました、これはTNTが定義されたのは爆竹よりも後だったことによります。
72
+ ` tnt ` が ` firecracker ` (爆竹)が鳴る前に爆発してしまいました。
73
+ これはTNTが定義されたのは爆竹よりも後だったためです。
71
74
ラストイン・ファーストアウトです。
72
75
73
76
<!-- So what is `Drop` good for? Generally, `Drop` is used to clean up any resources -->
74
77
<!-- associated with a `struct`. For example, the [`Arc<T>` type][arc] is a -->
75
78
<!-- reference-counted type. When `Drop` is called, it will decrement the reference -->
76
79
<!-- count, and if the total number of references is zero, will clean up the -->
77
80
<!-- underlying value. -->
78
- ` Drop ` は何をするのに適しているのでしょうか?一般的に ` Drop ` は ` struct ` に関連付けられているリソースのクリーンアップに利用されます。
79
- たとえば、 [ ` Arc<T> ` 型] [ arc ] は参照カウントを行う型です。 ` Drop ` が呼ばれると、参照カウントがデクリメントされ、
80
- もし参照の合計数が0になっていたら、内包している値がクリーンアップされます。
81
+ ` Drop ` は何をするのに向いているのでしょうか?
82
+ 一般的に ` Drop ` は ` struct ` に関連付けられているリソースのクリーンアップに使われます。
83
+ たとえば [ ` Arc<T> ` 型] [ arc ] は参照カウントを行う型です。
84
+ ` Drop ` が呼ばれると、参照カウントがデクリメントされ、もし参照の合計数が0になっていたら、内包している値がクリーンアップされます。
81
85
82
86
[ arc ] : ../std/sync/struct.Arc.html
0 commit comments