mirror of
https://github.com/rust-lang/rust.git
synced 2024-10-31 06:22:00 +00:00
Add docs about performance and Iterator::map
to [T; N]::map
This commit is contained in:
parent
a985d8e6c7
commit
5cc7702bde
@ -293,6 +293,28 @@ impl<T, const N: usize> [T; N] {
|
||||
/// Returns an array of the same size as `self`, with function `f` applied to each element
|
||||
/// in order.
|
||||
///
|
||||
/// If you don't necessarily need a new fixed-size array, consider using
|
||||
/// [`Iterator::map`] instead.
|
||||
///
|
||||
///
|
||||
/// # Note on performance and stack usage
|
||||
///
|
||||
/// Unfortunately, usages of this method are currently not always optimized
|
||||
/// as well as they could be. This mainly concerns large arrays, as mapping
|
||||
/// over small arrays seem to be optimized just fine. Also note that in
|
||||
/// debug mode (i.e. without any optimizations), this method can use a lot
|
||||
/// of stack space (a few times the size of the array or more).
|
||||
///
|
||||
/// Therefore, in performance-critical code, try to avoid using this method
|
||||
/// on large arrays or check the emitted code. Also try to avoid chained
|
||||
/// maps (e.g. `arr.map(...).map(...)`).
|
||||
///
|
||||
/// In many cases, you can instead use [`Iterator::map`] by calling `.iter()`
|
||||
/// or `.into_iter()` on your array. `[T; N]::map` is only necessary if you
|
||||
/// really need a new array of the same size as the result. Rust's lazy
|
||||
/// iterators tend to get optimized very well.
|
||||
///
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// ```
|
||||
|
Loading…
Reference in New Issue
Block a user