about summary refs log tree commit diff
diff options
context:
space:
mode:
authorF001 <changchun.fan@qq.com>2018-05-05 16:34:43 +0800
committerF001 <changchun.fan@qq.com>2018-05-05 16:38:27 +0800
commit160063aad2206a35e6312bfaa159f0f4475af0ae (patch)
treecfd992dac840404b7921f39670bdc27ef6d82f20
parent1d168261a1bc0031ef27de735992a4842fd62553 (diff)
downloadrust-160063aad2206a35e6312bfaa159f0f4475af0ae.tar.gz
rust-160063aad2206a35e6312bfaa159f0f4475af0ae.zip
make `String::new()` const
-rw-r--r--src/liballoc/lib.rs1
-rw-r--r--src/liballoc/string.rs3
-rw-r--r--src/test/run-pass/collections-const-new.rs (renamed from src/test/run-pass/vec-const-new.rs)7
3 files changed, 9 insertions, 2 deletions
diff --git a/src/liballoc/lib.rs b/src/liballoc/lib.rs
index da4b76a4d52..bb78c14b905 100644
--- a/src/liballoc/lib.rs
+++ b/src/liballoc/lib.rs
@@ -125,6 +125,7 @@
 #![feature(inclusive_range_methods)]
 #![cfg_attr(stage0, feature(generic_param_attrs))]
 #![feature(rustc_const_unstable)]
+#![feature(const_vec_new)]
 
 #![cfg_attr(not(test), feature(fn_traits, i128))]
 #![cfg_attr(test, feature(test))]
diff --git a/src/liballoc/string.rs b/src/liballoc/string.rs
index 2f84d5f7f86..da9afdd2ca3 100644
--- a/src/liballoc/string.rs
+++ b/src/liballoc/string.rs
@@ -380,7 +380,8 @@ impl String {
     /// ```
     #[inline]
     #[stable(feature = "rust1", since = "1.0.0")]
-    pub fn new() -> String {
+    #[rustc_const_unstable(feature = "const_string_new")]
+    pub const fn new() -> String {
         String { vec: Vec::new() }
     }
 
diff --git a/src/test/run-pass/vec-const-new.rs b/src/test/run-pass/collections-const-new.rs
index 62e2a36d7cc..4003c2ec4f7 100644
--- a/src/test/run-pass/vec-const-new.rs
+++ b/src/test/run-pass/collections-const-new.rs
@@ -8,10 +8,15 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-// Test that Vec::new() can be used for constants
+// Test several functions can be used for constants
+// 1. Vec::new()
+// 2. String::new()
 
 #![feature(const_vec_new)]
+#![feature(const_string_new)]
 
 const MY_VEC: Vec<usize> = Vec::new();
 
+const MY_STRING: String = String::new();
+
 pub fn main() {}