Skip to content

Commit

Permalink
Rollup merge of rust-lang#50460 - F001:const_string, r=kennytm
Browse files Browse the repository at this point in the history
Make `String::new()` const

Following the steps of rust-lang#50233 , make `String::new()` a `const fn`.
  • Loading branch information
kennytm committed May 9, 2018
2 parents dea03f1 + 160063a commit 1f4718a
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 2 deletions.
1 change: 1 addition & 0 deletions src/liballoc/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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))]
Expand Down
3 changes: 2 additions & 1 deletion src/liballoc/string.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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() }
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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() {}

0 comments on commit 1f4718a

Please sign in to comment.