1 // Copyright 2012-2013 The Rust Project Developers. See the COPYRIGHT
2 // file at the top-level directory of this distribution and at
3 // http://rust-lang.org/COPYRIGHT.
5 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8 // option. This file may not be copied, modified, or distributed
9 // except according to those terms.
13 # The Rust standard library
15 The Rust standard library is a group of interrelated modules defining
16 the core language traits, operations on built-in data types, collections,
17 platform abstractions, the task scheduler, runtime support for language
18 features and other common functionality.
20 `std` includes modules corresponding to each of the integer types,
21 each of the floating point types, the `bool` type, tuples, characters,
22 strings (`str`), vectors (`vec`), managed boxes (`managed`), owned
23 boxes (`owned`), and unsafe and borrowed pointers (`ptr`, `borrowed`).
24 Additionally, `std` provides pervasive types (`option` and `result`),
25 task creation and communication primitives (`task`, `comm`), platform
26 abstractions (`os` and `path`), basic I/O abstractions (`io`), common
27 traits (`kinds`, `ops`, `cmp`, `num`, `to_str`), and complete bindings
28 to the C standard library (`libc`).
30 # Standard library injection and the Rust prelude
32 `std` is imported at the topmost level of every crate by default, as
33 if the first line of each crate was
37 This means that the contents of std can be accessed from any context
38 with the `std::` path prefix, as in `use std::vec`, `use std::task::spawn`,
41 Additionally, `std` contains a `prelude` module that reexports many of the
42 most common types, traits and functions. The contents of the prelude are
43 imported into every *module* by default. Implicitly, all modules behave as if
44 they contained the following prologue:
53 uuid = "c70c24a7-5551-4f73-8e37-380b11d80be8",
54 url = "https://github.com/mozilla/rust/tree/master/src/libstd")];
56 #[comment = "The Rust standard library"];
57 #[license = "MIT/ASL2"];
58 #[crate_type = "lib"];
60 // Don't link to std. We are std.
63 #[deny(non_camel_case_types)];
66 // Make extra accessible for benchmarking
67 #[cfg(test)] extern mod extra(vers="0.8-pre");
69 // Make std testable by not duplicating lang items. See #2912
70 #[cfg(test)] extern mod realstd(name = "std");
71 #[cfg(test)] pub use kinds = realstd::kinds;
72 #[cfg(test)] pub use ops = realstd::ops;
73 #[cfg(test)] pub use cmp = realstd::cmp;
75 // On Linux, link to the runtime with -lrt.
76 #[cfg(target_os = "linux")]
79 #[link_args="-lrustrt -lrt"]
80 #[link_args = "-lpthread"]
94 #[path = "num/int_macros.rs"] mod int_macros;
95 #[path = "num/uint_macros.rs"] mod uint_macros;
97 #[path = "num/int.rs"] pub mod int;
98 #[path = "num/i8.rs"] pub mod i8;
99 #[path = "num/i16.rs"] pub mod i16;
100 #[path = "num/i32.rs"] pub mod i32;
101 #[path = "num/i64.rs"] pub mod i64;
103 #[path = "num/uint.rs"] pub mod uint;
104 #[path = "num/u8.rs"] pub mod u8;
105 #[path = "num/u16.rs"] pub mod u16;
106 #[path = "num/u32.rs"] pub mod u32;
107 #[path = "num/u64.rs"] pub mod u64;
109 #[path = "num/float.rs"] pub mod float;
110 #[path = "num/f32.rs"] pub mod f32;
111 #[path = "num/f64.rs"] pub mod f64;
122 #[path = "str/ascii.rs"]
131 /* Core language traits */
133 #[cfg(not(test))] pub mod kinds;
134 #[cfg(not(test))] pub mod ops;
135 #[cfg(not(test))] pub mod cmp;
141 #[path = "num/num.rs"]
153 /* Common data structures */
163 /* Tasks and communication */
171 /* Runtime and platform support */
189 /* Unsupported interfaces */
194 /* For internal use, not exported */
197 #[path = "num/cmath.rs"]
200 // XXX: This shouldn't be pub, and it should be reexported under 'unstable'
201 // but name resolution doesn't work without it being pub.
204 // A curious inner-module that's not exported that contains the binding
205 // 'std' so that macro-expanded references to std::error and such
206 // can be resolved within libstd.