|
1 | 1 | // Copyright (c) 2017-present PyO3 Project and Contributors
|
2 | 2 |
|
| 3 | +#[cfg(nightly_optimizations)] |
3 | 4 | use crate::buffer;
|
4 | 5 | use crate::err::{self, PyDowncastError, PyErr, PyResult};
|
5 | 6 | use crate::exceptions;
|
@@ -265,13 +266,22 @@ macro_rules! array_impls {
|
265 | 266 | where
|
266 | 267 | T: Copy + Default + FromPyObject<'a>,
|
267 | 268 | {
|
| 269 | + #[cfg(not(nightly_optimizations))] |
| 270 | + fn extract(obj: &'a PyAny) -> PyResult<Self> { |
| 271 | + let mut array = [T::default(); $N]; |
| 272 | + extract_sequence_into_slice(obj, &mut array)?; |
| 273 | + Ok(array) |
| 274 | + } |
| 275 | + |
| 276 | + #[cfg(nightly_optimizations)] |
268 | 277 | default fn extract(obj: &'a PyAny) -> PyResult<Self> {
|
269 | 278 | let mut array = [T::default(); $N];
|
270 | 279 | extract_sequence_into_slice(obj, &mut array)?;
|
271 | 280 | Ok(array)
|
272 | 281 | }
|
273 | 282 | }
|
274 | 283 |
|
| 284 | + #[cfg(nightly_optimizations)] |
275 | 285 | impl<'source, T> FromPyObject<'source> for [T; $N]
|
276 | 286 | where
|
277 | 287 | for<'a> T: Copy + Default + FromPyObject<'a> + buffer::Element,
|
@@ -304,11 +314,18 @@ impl<'a, T> FromPyObject<'a> for Vec<T>
|
304 | 314 | where
|
305 | 315 | T: FromPyObject<'a>,
|
306 | 316 | {
|
| 317 | + #[cfg(not(nightly_optimizations))] |
| 318 | + fn extract(obj: &'a PyAny) -> PyResult<Self> { |
| 319 | + extract_sequence(obj) |
| 320 | + } |
| 321 | + |
| 322 | + #[cfg(nightly_optimizations)] |
307 | 323 | default fn extract(obj: &'a PyAny) -> PyResult<Self> {
|
308 | 324 | extract_sequence(obj)
|
309 | 325 | }
|
310 | 326 | }
|
311 | 327 |
|
| 328 | +#[cfg(nightly_optimizations)] |
312 | 329 | impl<'source, T> FromPyObject<'source> for Vec<T>
|
313 | 330 | where
|
314 | 331 | for<'a> T: FromPyObject<'a> + buffer::Element + Copy,
|
|
0 commit comments