about summary refs log tree commit diff
diff options
context:
space:
mode:
authorfee1-dead <ent3rm4n@gmail.com>2022-09-25 22:06:40 +0800
committerGitHub <noreply@github.com>2022-09-25 22:06:40 +0800
commit69aa41b000dacbc4f73a2cfdcbc7e1a8a14e03ca (patch)
tree8c78da16e7a1a191aee35559d1016f70af9faec4
parentb7d9de72ac8834357224216e7a5b84d7894b57c9 (diff)
parent449326aaad21ad6e0d104d506d6d1e197e6b9719 (diff)
downloadrust-69aa41b000dacbc4f73a2cfdcbc7e1a8a14e03ca.tar.gz
rust-69aa41b000dacbc4f73a2cfdcbc7e1a8a14e03ca.zip
Rollup merge of #102200 - ink-feather-org:const_default_impls, r=fee1-dead
Constify Default impl's for Arrays and Tuples.

Allows to create arrays and tuples in const Context using the ~const Default implementation of the inner type.
-rw-r--r--library/core/src/array/mod.rs3
-rw-r--r--library/core/src/tuple.rs3
2 files changed, 4 insertions, 2 deletions
diff --git a/library/core/src/array/mod.rs b/library/core/src/array/mod.rs
index 165b9d24d93..36e89a95fd2 100644
--- a/library/core/src/array/mod.rs
+++ b/library/core/src/array/mod.rs
@@ -434,7 +434,8 @@ impl<T: Copy> SpecArrayClone for T {
 macro_rules! array_impl_default {
     {$n:expr, $t:ident $($ts:ident)*} => {
         #[stable(since = "1.4.0", feature = "array_default")]
-        impl<T> Default for [T; $n] where T: Default {
+        #[rustc_const_unstable(feature = "const_default_impls", issue = "87864")]
+        impl<T> const Default for [T; $n] where T: ~const Default {
             fn default() -> [T; $n] {
                 [$t::default(), $($ts::default()),*]
             }
diff --git a/library/core/src/tuple.rs b/library/core/src/tuple.rs
index aa8a2425bf4..fc91fe468cc 100644
--- a/library/core/src/tuple.rs
+++ b/library/core/src/tuple.rs
@@ -93,7 +93,8 @@ macro_rules! tuple_impls {
         maybe_tuple_doc! {
             $($T)+ @
             #[stable(feature = "rust1", since = "1.0.0")]
-            impl<$($T:Default),+> Default for ($($T,)+) {
+            #[rustc_const_unstable(feature = "const_default_impls", issue = "87864")]
+            impl<$($T: ~const Default),+> const Default for ($($T,)+) {
                 #[inline]
                 fn default() -> ($($T,)+) {
                     ($({ let x: $T = Default::default(); x},)+)