Skip to content

Commit 98d20ef

Browse files
authored
Merge pull request #442 from jturner314/more-to-owned-docs
Add note about memory layout in .to_owned() docs
2 parents d4a326d + 8c003b0 commit 98d20ef

File tree

1 file changed

+30
-1
lines changed

1 file changed

+30
-1
lines changed

src/impl_methods.rs

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,36 @@ impl<A, S, D> ArrayBase<S, D> where S: Data<Elem=A>, D: Dimension
124124
}
125125
}
126126

127-
/// Return an uniquely owned copy of the array
127+
/// Return an uniquely owned copy of the array.
128+
///
129+
/// If the input array is contiguous and its strides are positive, then the
130+
/// output array will have the same memory layout. Otherwise, the layout of
131+
/// the output array is unspecified. If you need a particular layout, you
132+
/// can allocate a new array with the desired memory layout and
133+
/// [`.assign()`](#method.assign) the data. Alternatively, you can collect
134+
/// an iterator, like this for a result in standard layout:
135+
///
136+
/// ```
137+
/// # use ndarray::prelude::*;
138+
/// # let arr = Array::from_shape_vec((2, 2).f(), vec![1, 2, 3, 4]).unwrap();
139+
/// # let owned = {
140+
/// Array::from_shape_vec(arr.raw_dim(), arr.iter().cloned().collect()).unwrap()
141+
/// # };
142+
/// # assert!(owned.is_standard_layout());
143+
/// # assert_eq!(arr, owned);
144+
/// ```
145+
///
146+
/// or this for a result in column-major (Fortran) layout:
147+
///
148+
/// ```
149+
/// # use ndarray::prelude::*;
150+
/// # let arr = Array::from_shape_vec((2, 2), vec![1, 2, 3, 4]).unwrap();
151+
/// # let owned = {
152+
/// Array::from_shape_vec(arr.raw_dim().f(), arr.t().iter().cloned().collect()).unwrap()
153+
/// # };
154+
/// # assert!(owned.t().is_standard_layout());
155+
/// # assert_eq!(arr, owned);
156+
/// ```
128157
pub fn to_owned(&self) -> Array<A, D>
129158
where A: Clone
130159
{

0 commit comments

Comments
 (0)