diff options
| author | F001 <changchun.fan@qq.com> | 2018-05-05 16:34:43 +0800 |
|---|---|---|
| committer | F001 <changchun.fan@qq.com> | 2018-05-05 16:38:27 +0800 |
| commit | 160063aad2206a35e6312bfaa159f0f4475af0ae (patch) | |
| tree | cfd992dac840404b7921f39670bdc27ef6d82f20 | |
| parent | 1d168261a1bc0031ef27de735992a4842fd62553 (diff) | |
| download | rust-160063aad2206a35e6312bfaa159f0f4475af0ae.tar.gz rust-160063aad2206a35e6312bfaa159f0f4475af0ae.zip | |
make `String::new()` const
| -rw-r--r-- | src/liballoc/lib.rs | 1 | ||||
| -rw-r--r-- | src/liballoc/string.rs | 3 | ||||
| -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() {} |
