@@ -916,11 +916,40 @@ mod prim_str {}
916
916
///
917
917
/// # Trait implementations
918
918
///
919
- /// In this documentation the shorthand `(T, ...)` is used to represent all
920
- /// tuples up to length twelve. When that is used, any trait bounds expressed
921
- /// on `T` applies to each field of the tuple independently. Note that this is
922
- /// a convenience notation to avoid repetitive documentation, not valid
923
- /// Rust syntax.
919
+ /// In this documentation the shorthand `(T, ...)` is used to represent tuples of varying length.
920
+ /// When that is used, any trait bounds expressed on `T` applies to each field of the tuple
921
+ /// independently. Note that this is a convenience notation to avoid repetitive documentation,
922
+ /// not valid Rust syntax.
923
+ ///
924
+ /// Due to a temporary restriction in Rust’s type system, the following traits are only
925
+ /// implemented on tuples of arity 12 or less. In the future, this may change:
926
+ ///
927
+ /// * [`PartialEq`]
928
+ /// * [`Eq`]
929
+ /// * [`PartialOrd`]
930
+ /// * [`Ord`]
931
+ /// * [`Debug`]
932
+ /// * [`Default`]
933
+ /// * [`Hash`]
934
+ ///
935
+ /// [`Debug`]: fmt::Debug
936
+ /// [`Hash`]: hash::Hash
937
+ ///
938
+ /// The following traits are implemented for tuples of any length. These traits have
939
+ /// implementations that are automatically generated by the compiler, so are not limited by
940
+ /// missing language features.
941
+ ///
942
+ /// * [`Clone`]
943
+ /// * [`Copy`]
944
+ /// * [`Send`]
945
+ /// * [`Sync`]
946
+ /// * [`Unpin`]
947
+ /// * [`UnwindSafe`]
948
+ /// * [`RefUnwindSafe`]
949
+ ///
950
+ /// [`Unpin`]: marker::Unpin
951
+ /// [`UnwindSafe`]: panic::UnwindSafe
952
+ /// [`RefUnwindSafe`]: panic::RefUnwindSafe
924
953
///
925
954
/// # Examples
926
955
///
0 commit comments