Skip to content

Commit

Permalink
provide additional justification for array interface design
Browse files Browse the repository at this point in the history
Explain why Rust does not implement traits for large arrays.

Explain why most methods are implemented on slices rather than arrays.
  • Loading branch information
matthew-piziak committed Aug 12, 2016
1 parent 11f8805 commit e173ead
Showing 1 changed file with 8 additions and 3 deletions.
11 changes: 8 additions & 3 deletions src/libstd/primitive_docs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -269,13 +269,18 @@ mod prim_pointer { }
/// - `Borrow`, `BorrowMut`
/// - `Default`
///
/// This limitation to `N in 0..33` exists because Rust does not yet support
/// generics over the size of an array type. `[Foo; 3]` and `[Bar; 3]` are
/// instances of same generic type `[T; 3]`, but `[Foo; 3]` and `[Foo; 5]` are
/// entirely different types. As a stopgap, trait implementations are
/// statically generated for `N in 0..33`.
///
/// Arrays coerce to [slices (`[T]`)][slice], so their methods can be called on
/// arrays.
/// arrays. Slices are dynamic and do not coerce to arrays; consequently more
/// methods are defined on `slice` where they support both types.
///
/// [slice]: primitive.slice.html
///
/// Rust does not currently support generics over the size of an array type.
///
/// # Examples
///
/// ```
Expand Down

0 comments on commit e173ead

Please sign in to comment.