diff --git a/src/arraytraits.rs b/src/arraytraits.rs
index 449d57781..521822345 100644
--- a/src/arraytraits.rs
+++ b/src/arraytraits.rs
@@ -7,7 +7,6 @@
// except according to those terms.
use std::hash;
-use std::isize;
use std::iter::FromIterator;
use std::iter::IntoIterator;
use std::mem;
@@ -135,13 +134,7 @@ where
/// let array = Array::from(vec![1., 2., 3., 4.]);
/// ```
fn from(v: Vec) -> Self {
- if mem::size_of::() == 0 {
- assert!(
- v.len() <= isize::MAX as usize,
- "Length must fit in `isize`.",
- );
- }
- unsafe { Self::from_shape_vec_unchecked(v.len() as Ix, v) }
+ Self::from_vec(v)
}
}
@@ -165,7 +158,7 @@ where
where
I: IntoIterator- ,
{
- Self::from(iterable.into_iter().collect::>())
+ Self::from_iter(iterable)
}
}
diff --git a/src/impl_constructors.rs b/src/impl_constructors.rs
index 9af8048f6..71ca8b32d 100644
--- a/src/impl_constructors.rs
+++ b/src/impl_constructors.rs
@@ -14,6 +14,7 @@
#[cfg(feature = "std")]
use num_traits::Float;
use num_traits::{One, Zero};
+use std::mem;
use std::mem::MaybeUninit;
use alloc::vec;
use alloc::vec::Vec;
@@ -51,11 +52,29 @@ where
/// ```rust
/// use ndarray::Array;
///
- /// let array = Array::from(vec![1., 2., 3., 4.]);
+ /// let array = Array::from_vec(vec![1., 2., 3., 4.]);
/// ```
- #[deprecated(note = "use standard `from`", since = "0.13.0")]
pub fn from_vec(v: Vec) -> Self {
- Self::from(v)
+ if mem::size_of::() == 0 {
+ assert!(
+ v.len() <= isize::MAX as usize,
+ "Length must fit in `isize`.",
+ );
+ }
+ unsafe { Self::from_shape_vec_unchecked(v.len() as Ix, v) }
+ }
+
+ /// Create a one-dimensional array from an iterator or iterable.
+ ///
+ /// **Panics** if the length is greater than `isize::MAX`.
+ ///
+ /// ```rust
+ /// use ndarray::Array;
+ ///
+ /// let array = Array::from_iter(0..10);
+ /// ```
+ pub fn from_iter>(iterable: I) -> Self {
+ Self::from_vec(iterable.into_iter().collect())
}
/// Create a one-dimensional array with `n` evenly spaced elements from