Skip to content

Commit 39968a8

Browse files
committed
---
yaml --- r: 179079 b: refs/heads/master c: d4f9ec5 h: refs/heads/master i: 179077: 62f744f 179075: 97c3149 179071: c66d46b v: v3
1 parent 968b472 commit 39968a8

File tree

133 files changed

+1182
-399
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

133 files changed

+1182
-399
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
refs/heads/master: 7324c2cf4f09d44d1bde8c37716de9eca4aac565
2+
refs/heads/master: d4f9ec566249f88845c88c8b897097a262b4e0af
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: ac134f7ca435551964996ee88319241cd3c7c110
55
refs/heads/try: ccf8fedf1cffcb8f6f3581d53d220039e192fe77

trunk/src/doc/reference.md

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -256,11 +256,11 @@ cases mentioned in [Number literals](#number-literals) below.
256256

257257
| [Number literals](#number-literals)`*` | Example | Exponentiation | Suffixes |
258258
|----------------------------------------|---------|----------------|----------|
259-
| Decimal integer | `98_222is` | `N/A` | Integer suffixes |
260-
| Hex integer | `0xffis` | `N/A` | Integer suffixes |
261-
| Octal integer | `0o77is` | `N/A` | Integer suffixes |
262-
| Binary integer | `0b1111_0000is` | `N/A` | Integer suffixes |
263-
| Floating-point | `123.0E+77f64` | `Optional` | Floating-point suffixes |
259+
| Decimal integer | `98_222` | `N/A` | Integer suffixes |
260+
| Hex integer | `0xff` | `N/A` | Integer suffixes |
261+
| Octal integer | `0o77` | `N/A` | Integer suffixes |
262+
| Binary integer | `0b1111_0000` | `N/A` | Integer suffixes |
263+
| Floating-point | `123.0E+77` | `Optional` | Floating-point suffixes |
264264

265265
`*` All number literals allow `_` as a visual separator: `1_234.0E+18f64`
266266

@@ -2467,6 +2467,12 @@ The currently implemented features of the reference compiler are:
24672467

24682468
* `associated_types` - Allows type aliases in traits. Experimental.
24692469

2470+
* `no_std` - Allows the `#![no_std]` crate attribute, which disables the implicit
2471+
`extern crate std`. This typically requires use of the unstable APIs
2472+
behind the libstd "facade", such as libcore and libcollections. It
2473+
may also cause problems when using syntax extensions, including
2474+
`#[derive]`.
2475+
24702476
If a feature is promoted to a language feature, then all existing programs will
24712477
start to receive compilation warnings about #[feature] directives which enabled
24722478
the new feature (because the directive is no longer necessary). However, if a

trunk/src/doc/trpl/unsafe.md

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -433,6 +433,7 @@ attribute attached to the crate.
433433
```ignore
434434
// a minimal library
435435
#![crate_type="lib"]
436+
#![feature(no_std)]
436437
#![no_std]
437438
# // fn main() {} tricked you, rustdoc!
438439
```
@@ -446,8 +447,8 @@ The function marked `#[start]` is passed the command line parameters
446447
in the same format as C:
447448

448449
```
450+
#![feature(lang_items, start, no_std)]
449451
#![no_std]
450-
#![feature(lang_items, start)]
451452
452453
// Pull in the system libc library for what crt0.o likely requires
453454
extern crate libc;
@@ -473,6 +474,7 @@ correct ABI and the correct name, which requires overriding the
473474
compiler's name mangling too:
474475

475476
```ignore
477+
#![feature(no_std)]
476478
#![no_std]
477479
#![no_main]
478480
#![feature(lang_items, start)]
@@ -528,8 +530,8 @@ As an example, here is a program that will calculate the dot product of two
528530
vectors provided from C, using idiomatic Rust practices.
529531

530532
```
533+
#![feature(lang_items, start, no_std)]
531534
#![no_std]
532-
#![feature(lang_items, start)]
533535
534536
# extern crate libc;
535537
extern crate core;
@@ -576,10 +578,6 @@ extern fn panic_fmt(args: &core::fmt::Arguments,
576578
#[lang = "eh_personality"] extern fn eh_personality() {}
577579
# #[start] fn start(argc: isize, argv: *const *const u8) -> isize { 0 }
578580
# fn main() {}
579-
# mod std { // for-loops
580-
# pub use core::iter;
581-
# pub use core::option;
582-
# }
583581
```
584582

585583
Note that there is one extra lang item here which differs from the examples
@@ -656,8 +654,8 @@ and one for deallocation. A freestanding program that uses the `Box`
656654
sugar for dynamic allocations via `malloc` and `free`:
657655

658656
```
657+
#![feature(lang_items, box_syntax, start, no_std)]
659658
#![no_std]
660-
#![feature(lang_items, box_syntax, start)]
661659
662660
extern crate libc;
663661

trunk/src/liballoc/lib.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@
6565
html_favicon_url = "http://www.rust-lang.org/favicon.ico",
6666
html_root_url = "http://doc.rust-lang.org/nightly/")]
6767

68+
#![feature(no_std)]
6869
#![no_std]
6970
#![feature(lang_items, unsafe_destructor)]
7071
#![feature(box_syntax)]
@@ -126,7 +127,8 @@ pub fn oom() -> ! {
126127
#[doc(hidden)]
127128
pub fn fixme_14344_be_sure_to_link_to_collections() {}
128129

129-
#[cfg(not(test))]
130+
// NOTE: remove after next snapshot
131+
#[cfg(all(stage0, not(test)))]
130132
#[doc(hidden)]
131133
mod std {
132134
pub use core::fmt;

trunk/src/liballoc/rc.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ struct RcBox<T> {
172172

173173
/// An immutable reference-counted pointer type.
174174
///
175-
/// See the [module level documentation](../index.html) for more details.
175+
/// See the [module level documentation](./index.html) for more details.
176176
#[unsafe_no_drop_flag]
177177
#[stable(feature = "rust1", since = "1.0.0")]
178178
pub struct Rc<T> {
@@ -624,7 +624,7 @@ impl<T: fmt::Debug> fmt::Debug for Rc<T> {
624624
///
625625
/// Weak references do not count when determining if the inner value should be dropped.
626626
///
627-
/// See the [module level documentation](../index.html) for more.
627+
/// See the [module level documentation](./index.html) for more.
628628
#[unsafe_no_drop_flag]
629629
#[unstable(feature = "alloc",
630630
reason = "Weak pointers may not belong in this module.")]

trunk/src/libcollections/btree/map.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -910,8 +910,6 @@ impl<K: Ord, Q: ?Sized, V> Index<Q> for BTreeMap<K, V>
910910
impl<K: Ord, Q: ?Sized, V> IndexMut<Q> for BTreeMap<K, V>
911911
where Q: BorrowFrom<K> + Ord
912912
{
913-
type Output = V;
914-
915913
fn index_mut(&mut self, key: &Q) -> &mut V {
916914
self.get_mut(key).expect("no entry found for key")
917915
}

trunk/src/libstd/fmt.rs renamed to trunk/src/libcollections/fmt.rs

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright 2013-2014 The Rust Project Developers. See the COPYRIGHT
1+
// Copyright 2013-2015 The Rust Project Developers. See the COPYRIGHT
22
// file at the top-level directory of this distribution and at
33
// http://rust-lang.org/COPYRIGHT.
44
//
@@ -134,7 +134,7 @@
134134
//! * `E` ⇒ `UpperExp`
135135
//!
136136
//! What this means is that any type of argument which implements the
137-
//! `std::fmt::Binary` trait can then be formatted with `{:b}`. Implementations
137+
//! `fmt::Binary` trait can then be formatted with `{:b}`. Implementations
138138
//! are provided for these traits for a number of primitive types by the
139139
//! standard library as well. If no format is specified (as in `{}` or `{:6}`),
140140
//! then the format trait used is the `Display` trait.
@@ -146,7 +146,7 @@
146146
//! # use std::fmt;
147147
//! # struct Foo; // our custom type
148148
//! # impl fmt::Display for Foo {
149-
//! fn fmt(&self, f: &mut std::fmt::Formatter) -> fmt::Result {
149+
//! fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
150150
//! # write!(f, "testing, testing")
151151
//! # } }
152152
//! ```
@@ -403,8 +403,6 @@
403403
404404
#![unstable(feature = "std_misc")]
405405

406-
use string;
407-
408406
pub use core::fmt::{Formatter, Result, Writer, rt};
409407
pub use core::fmt::{Show, String, Octal, Binary};
410408
pub use core::fmt::{Display, Debug};
@@ -413,6 +411,8 @@ pub use core::fmt::{LowerExp, UpperExp};
413411
pub use core::fmt::Error;
414412
pub use core::fmt::{ArgumentV1, Arguments, write, radix, Radix, RadixFmt};
415413

414+
use string;
415+
416416
/// The format function takes a precompiled format string and a list of
417417
/// arguments, to return the resulting formatted string.
418418
///
@@ -434,3 +434,15 @@ pub fn format(args: Arguments) -> string::String {
434434
let _ = write!(&mut output, "{}", args);
435435
output
436436
}
437+
438+
#[cfg(test)]
439+
mod tests {
440+
use prelude::*;
441+
use fmt;
442+
443+
#[test]
444+
fn test_format() {
445+
let s = fmt::format(format_args!("Hello, {}!", "world"));
446+
assert_eq!(s.as_slice(), "Hello, world!");
447+
}
448+
}

trunk/src/libcollections/lib.rs

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
#![cfg_attr(test, feature(test))]
3434
#![cfg_attr(test, allow(deprecated))] // rand
3535

36+
#![feature(no_std)]
3637
#![no_std]
3738

3839
#[macro_use]
@@ -68,6 +69,7 @@ mod bit;
6869
mod btree;
6970
pub mod dlist;
7071
pub mod enum_set;
72+
pub mod fmt;
7173
pub mod ring_buf;
7274
pub mod slice;
7375
pub mod str;
@@ -107,15 +109,16 @@ pub fn fixme_14344_be_sure_to_link_to_collections() {}
107109

108110
#[cfg(not(test))]
109111
mod std {
110-
pub use core::fmt; // necessary for panic!()
111-
pub use core::option; // necessary for panic!()
112-
pub use core::clone; // derive(Clone)
113-
pub use core::cmp; // derive(Eq, Ord, etc.)
114-
pub use core::marker; // derive(Copy)
115-
pub use core::hash; // derive(Hash)
112+
// NOTE: remove after next snapshot
113+
#[cfg(stage0)] pub use core::clone; // derive(Clone)
114+
#[cfg(stage0)] pub use core::cmp; // derive(Eq, Ord, etc.)
115+
#[cfg(stage0)] pub use core::marker; // derive(Copy)
116+
#[cfg(stage0)] pub use core::hash; // derive(Hash)
117+
#[cfg(stage0)] pub use core::iter;
118+
#[cfg(stage0)] pub use core::fmt; // necessary for panic!()
119+
#[cfg(stage0)] pub use core::option; // necessary for panic!()
120+
116121
pub use core::ops; // RangeFull
117-
// for-loops
118-
pub use core::iter;
119122
}
120123

121124
#[cfg(test)]

trunk/src/libcollections/macros.rs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,19 @@ macro_rules! vec {
2222
);
2323
($($x:expr,)*) => (vec![$($x),*])
2424
}
25+
26+
/// Use the syntax described in `std::fmt` to create a value of type `String`.
27+
/// See `std::fmt` for more information.
28+
///
29+
/// # Example
30+
///
31+
/// ```
32+
/// format!("test");
33+
/// format!("hello {}", "world!");
34+
/// format!("x = {}, y = {y}", 10, y = 30);
35+
/// ```
36+
#[macro_export]
37+
#[stable(feature = "rust1", since = "1.0.0")]
38+
macro_rules! format {
39+
($($arg:tt)*) => ($crate::fmt::format(format_args!($($arg)*)))
40+
}

trunk/src/libcollections/ring_buf.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ use core::ops::{Index, IndexMut};
2727
use core::ptr;
2828
use core::raw::Slice as RawSlice;
2929

30-
use std::hash::{Writer, Hash, Hasher};
31-
use std::cmp;
30+
use core::hash::{Writer, Hash, Hasher};
31+
use core::cmp;
3232

3333
use alloc::heap;
3434

@@ -1591,8 +1591,6 @@ impl<A> Index<usize> for RingBuf<A> {
15911591

15921592
#[stable(feature = "rust1", since = "1.0.0")]
15931593
impl<A> IndexMut<usize> for RingBuf<A> {
1594-
type Output = A;
1595-
15961594
#[inline]
15971595
fn index_mut(&mut self, i: &usize) -> &mut A {
15981596
self.get_mut(*i).expect("Out of bounds access")

trunk/src/libcollections/vec.rs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1286,8 +1286,6 @@ impl<T> Index<usize> for Vec<T> {
12861286

12871287
#[stable(feature = "rust1", since = "1.0.0")]
12881288
impl<T> IndexMut<usize> for Vec<T> {
1289-
type Output = T;
1290-
12911289
#[inline]
12921290
fn index_mut(&mut self, index: &usize) -> &mut T {
12931291
// NB built-in indexing via `&mut [T]`
@@ -1331,31 +1329,27 @@ impl<T> ops::Index<ops::RangeFull> for Vec<T> {
13311329

13321330
#[stable(feature = "rust1", since = "1.0.0")]
13331331
impl<T> ops::IndexMut<ops::Range<usize>> for Vec<T> {
1334-
type Output = [T];
13351332
#[inline]
13361333
fn index_mut(&mut self, index: &ops::Range<usize>) -> &mut [T] {
13371334
IndexMut::index_mut(&mut **self, index)
13381335
}
13391336
}
13401337
#[stable(feature = "rust1", since = "1.0.0")]
13411338
impl<T> ops::IndexMut<ops::RangeTo<usize>> for Vec<T> {
1342-
type Output = [T];
13431339
#[inline]
13441340
fn index_mut(&mut self, index: &ops::RangeTo<usize>) -> &mut [T] {
13451341
IndexMut::index_mut(&mut **self, index)
13461342
}
13471343
}
13481344
#[stable(feature = "rust1", since = "1.0.0")]
13491345
impl<T> ops::IndexMut<ops::RangeFrom<usize>> for Vec<T> {
1350-
type Output = [T];
13511346
#[inline]
13521347
fn index_mut(&mut self, index: &ops::RangeFrom<usize>) -> &mut [T] {
13531348
IndexMut::index_mut(&mut **self, index)
13541349
}
13551350
}
13561351
#[stable(feature = "rust1", since = "1.0.0")]
13571352
impl<T> ops::IndexMut<ops::RangeFull> for Vec<T> {
1358-
type Output = [T];
13591353
#[inline]
13601354
fn index_mut(&mut self, _index: &ops::RangeFull) -> &mut [T] {
13611355
self.as_mut_slice()

trunk/src/libcollections/vec_map.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -712,8 +712,6 @@ impl<V> Index<usize> for VecMap<V> {
712712

713713
#[stable(feature = "rust1", since = "1.0.0")]
714714
impl<V> IndexMut<usize> for VecMap<V> {
715-
type Output = V;
716-
717715
#[inline]
718716
fn index_mut<'a>(&'a mut self, i: &usize) -> &'a mut V {
719717
self.get_mut(i).expect("key not present")

trunk/src/libcore/iter.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ use num::{ToPrimitive, Int};
6767
use ops::{Add, Deref, FnMut};
6868
use option::Option;
6969
use option::Option::{Some, None};
70-
use std::marker::Sized;
70+
use marker::Sized;
7171
use usize;
7272

7373
/// An interface for dealing with "external iterators". These types of iterators

trunk/src/libcore/lib.rs

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
html_root_url = "http://doc.rust-lang.org/nightly/",
5757
html_playground_url = "http://play.rust-lang.org/")]
5858

59+
#![feature(no_std)]
5960
#![no_std]
6061
#![allow(raw_pointer_derive)]
6162
#![deny(missing_docs)]
@@ -148,17 +149,25 @@ mod array;
148149
mod core {
149150
pub use panicking;
150151
pub use fmt;
152+
#[cfg(not(stage0))] pub use clone;
153+
#[cfg(not(stage0))] pub use cmp;
154+
#[cfg(not(stage0))] pub use hash;
155+
#[cfg(not(stage0))] pub use marker;
156+
#[cfg(not(stage0))] pub use option;
157+
#[cfg(not(stage0))] pub use iter;
151158
}
152159

153160
#[doc(hidden)]
154161
mod std {
155-
pub use clone;
156-
pub use cmp;
157-
pub use fmt;
158-
pub use hash;
159-
pub use marker;
162+
// NOTE: remove after next snapshot
163+
#[cfg(stage0)] pub use clone;
164+
#[cfg(stage0)] pub use cmp;
165+
#[cfg(stage0)] pub use hash;
166+
#[cfg(stage0)] pub use marker;
167+
#[cfg(stage0)] pub use option;
168+
#[cfg(stage0)] pub use fmt;
169+
#[cfg(stage0)] pub use iter;
170+
171+
// range syntax
160172
pub use ops;
161-
pub use option;
162-
// for-loops
163-
pub use iter;
164173
}

0 commit comments

Comments
 (0)