File tree Expand file tree Collapse file tree 1 file changed +16
-6
lines changed Expand file tree Collapse file tree 1 file changed +16
-6
lines changed Original file line number Diff line number Diff line change @@ -1106,9 +1106,14 @@ impl<T: Element> PyArray<T, Ix2> {
1106
1106
let array = Self :: new ( py, dims, false ) ;
1107
1107
let mut data_ptr = array. data ( ) ;
1108
1108
for v in v {
1109
- for v in v {
1110
- data_ptr. write ( v. clone ( ) ) ;
1111
- data_ptr = data_ptr. add ( 1 ) ;
1109
+ if T :: IS_COPY {
1110
+ ptr:: copy_nonoverlapping ( v. as_ptr ( ) , data_ptr, len2) ;
1111
+ data_ptr = data_ptr. add ( len2) ;
1112
+ } else {
1113
+ for v in v {
1114
+ data_ptr. write ( v. clone ( ) ) ;
1115
+ data_ptr = data_ptr. add ( 1 ) ;
1116
+ }
1112
1117
}
1113
1118
}
1114
1119
Ok ( array)
@@ -1157,9 +1162,14 @@ impl<T: Element> PyArray<T, Ix3> {
1157
1162
let mut data_ptr = array. data ( ) ;
1158
1163
for v in v {
1159
1164
for v in v {
1160
- for v in v {
1161
- data_ptr. write ( v. clone ( ) ) ;
1162
- data_ptr = data_ptr. add ( 1 ) ;
1165
+ if T :: IS_COPY {
1166
+ ptr:: copy_nonoverlapping ( v. as_ptr ( ) , data_ptr, len3) ;
1167
+ data_ptr = data_ptr. add ( len3) ;
1168
+ } else {
1169
+ for v in v {
1170
+ data_ptr. write ( v. clone ( ) ) ;
1171
+ data_ptr = data_ptr. add ( 1 ) ;
1172
+ }
1163
1173
}
1164
1174
}
1165
1175
}
You can’t perform that action at this time.
0 commit comments