Skip to content

Commit f7a1277

Browse files
authored
Merge pull request #921 from rust-ndarray/inherent-from-2
Add back Array::from_vec and Array::from_iter
2 parents 1bf4b2d + d62e071 commit f7a1277

File tree

2 files changed

+24
-12
lines changed

2 files changed

+24
-12
lines changed

src/arraytraits.rs

+2-9
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
// except according to those terms.
88

99
use std::hash;
10-
use std::isize;
1110
use std::iter::FromIterator;
1211
use std::iter::IntoIterator;
1312
use std::mem;
@@ -135,13 +134,7 @@ where
135134
/// let array = Array::from(vec![1., 2., 3., 4.]);
136135
/// ```
137136
fn from(v: Vec<A>) -> Self {
138-
if mem::size_of::<A>() == 0 {
139-
assert!(
140-
v.len() <= isize::MAX as usize,
141-
"Length must fit in `isize`.",
142-
);
143-
}
144-
unsafe { Self::from_shape_vec_unchecked(v.len() as Ix, v) }
137+
Self::from_vec(v)
145138
}
146139
}
147140

@@ -165,7 +158,7 @@ where
165158
where
166159
I: IntoIterator<Item = A>,
167160
{
168-
Self::from(iterable.into_iter().collect::<Vec<A>>())
161+
Self::from_iter(iterable)
169162
}
170163
}
171164

src/impl_constructors.rs

+22-3
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
#[cfg(feature = "std")]
1515
use num_traits::Float;
1616
use num_traits::{One, Zero};
17+
use std::mem;
1718
use std::mem::MaybeUninit;
1819
use alloc::vec;
1920
use alloc::vec::Vec;
@@ -51,11 +52,29 @@ where
5152
/// ```rust
5253
/// use ndarray::Array;
5354
///
54-
/// let array = Array::from(vec![1., 2., 3., 4.]);
55+
/// let array = Array::from_vec(vec![1., 2., 3., 4.]);
5556
/// ```
56-
#[deprecated(note = "use standard `from`", since = "0.13.0")]
5757
pub fn from_vec(v: Vec<A>) -> Self {
58-
Self::from(v)
58+
if mem::size_of::<A>() == 0 {
59+
assert!(
60+
v.len() <= isize::MAX as usize,
61+
"Length must fit in `isize`.",
62+
);
63+
}
64+
unsafe { Self::from_shape_vec_unchecked(v.len() as Ix, v) }
65+
}
66+
67+
/// Create a one-dimensional array from an iterator or iterable.
68+
///
69+
/// **Panics** if the length is greater than `isize::MAX`.
70+
///
71+
/// ```rust
72+
/// use ndarray::Array;
73+
///
74+
/// let array = Array::from_iter(0..10);
75+
/// ```
76+
pub fn from_iter<I: IntoIterator<Item = A>>(iterable: I) -> Self {
77+
Self::from_vec(iterable.into_iter().collect())
5978
}
6079

6180
/// Create a one-dimensional array with `n` evenly spaced elements from

0 commit comments

Comments
 (0)