回答編集履歴

1

配列の一部を別の配列へコピーする方法を追記しました

2020/12/19 04:54

投稿

tatsuya6502
tatsuya6502

スコア2046

test CHANGED
@@ -76,7 +76,7 @@
76
76
 
77
77
 
78
78
 
79
- assert_eq!(slice, [12, 3]);
79
+ assert_eq!(slice, &[12, 3]);
80
80
 
81
81
 
82
82
 
@@ -92,8 +92,44 @@
92
92
 
93
93
 
94
94
 
95
- - https://cheats.rs/#pointer-payload
95
+ - [https://cheats.rs/#pointer-payload](https://cheats.rs/#pointer-payload)
96
96
 
97
97
 
98
98
 
99
99
  Pointer Payloadの`&'a [T]`がスライスです。
100
+
101
+
102
+
103
+ **追記**
104
+
105
+
106
+
107
+ 余談ですが、配列の一部をコピーするには以下のようにします。
108
+
109
+
110
+
111
+ **配列の一部を別の配列へコピーする**
112
+
113
+
114
+
115
+ ```rust
116
+
117
+ let a = [1, 2, 3, 4, 5]; // [i32; 5]型
118
+
119
+ let mut b = [0; 2]; // [i32; 2]型。0で初期化
120
+
121
+
122
+
123
+ // スライスが指す一連の要素をmemcpyでコピーする
124
+
125
+ b.copy_from_slice(&a[1..3]);
126
+
127
+
128
+
129
+ assert_eq!(b, [2, 3]);
130
+
131
+ ```
132
+
133
+
134
+
135
+ なお`copy_from_slice()`はスライスの要素が`Copy`トレイトを実装しているときだけ使えます([ドキュメント](https://doc.rust-lang.org/std/primitive.slice.html#method.copy_from_slice)) `Copy`トレイトは実装していないが`Clone`トレイトなら実装しているときは、`clone_from_slice()`を使います。