about summary refs log tree commit diff
path: root/src/libcore/core.rc
blob: 94e6decc4ca8f9b2c39e5e8f1fa0baf4e0ce58ce (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
/*!

The Rust core library.

The Rust core library provides runtime features required by the language,
including the task scheduler and memory allocators, as well as library
support for Rust built-in types, platform abstractions, and other commonly
used features.

`core` includes modules corresponding to each of the integer types, each of
the floating point types, the `bool` type, tuples, characters, strings,
vectors (`vec`), shared boxes (`box`), and unsafe and borrowed pointers
(`ptr`).  Additionally, `core` provides task management and creation (`task`),
communication primitives (`comm` and `pipes`), an efficient vector builder
(`dvec`), platform abstractions (`os` and `path`), basic I/O abstractions
(`io`), common traits (`cmp`, `num`, `to_str`), and complete bindings
to the C standard library (`libc`).

`core` is linked to all crates by default and its contents imported.
Implicitly, all crates behave as if they included the following prologue:

    extern mod core;
    use core::*;

*/

#[link(name = "core",
       vers = "0.4",
       uuid = "c70c24a7-5551-4f73-8e37-380b11d80be8",
       url = "https://github.com/mozilla/rust/tree/master/src/libcore")];

#[comment = "The Rust core library"];
#[license = "MIT"];
#[crate_type = "lib"];

// Don't link to core. We are core.
#[no_core];

#[warn(deprecated_mode)];
#[warn(deprecated_pattern)];

#[warn(vecs_implicitly_copyable)];
#[deny(non_camel_case_types)];

// Built-in-type support modules

/// Operations and constants for `int`
#[path = "int-template"]
pub mod int {
    pub use inst::{ pow };
    #[path = "int.rs"]
    pub mod inst;
}

/// Operations and constants for `i8`
#[path = "int-template"]
pub mod i8 {
    #[path = "i8.rs"]
    pub mod inst;
}

/// Operations and constants for `i16`
#[path = "int-template"]
pub mod i16 {
    #[path = "i16.rs"]
    pub mod inst;
}

/// Operations and constants for `i32`
#[path = "int-template"]
pub mod i32 {
    #[path = "i32.rs"]
    pub mod inst;
}

/// Operations and constants for `i64`
#[path = "int-template"]
pub mod i64 {
    #[path = "i64.rs"]
    pub mod inst;
}

/// Operations and constants for `uint`
#[path = "uint-template"]
pub mod uint {
    pub use inst::{
        div_ceil, div_round, div_floor, iterate,
        next_power_of_two
    };
    #[path = "uint.rs"]
    pub mod inst;
}

/// Operations and constants for `u8`
#[path = "uint-template"]
pub mod u8 {
    pub use inst::is_ascii;
    #[path = "u8.rs"]
    pub mod inst;
}

/// Operations and constants for `u16`
#[path = "uint-template"]
pub mod u16 {
    #[path = "u16.rs"]
    pub mod inst;
}

/// Operations and constants for `u32`
#[path = "uint-template"]
pub mod u32 {
    #[path = "u32.rs"]
    pub mod inst;
}

/// Operations and constants for `u64`
#[path = "uint-template"]
pub mod u64 {
    #[path = "u64.rs"]
    pub mod inst;
}


pub mod box;
pub mod char;
pub mod float;
pub mod f32;
pub mod f64;
pub mod str;
pub mod ptr;
pub mod vec;
pub mod at_vec;
pub mod bool;
pub mod tuple;
pub mod unit;
pub mod uniq;

// Ubiquitous-utility-type modules

#[cfg(notest)]
pub mod ops;
pub mod cmp;
pub mod num;
pub mod hash;
pub mod either;
pub mod iter;
pub mod logging;
pub mod option;
#[path="iter-trait"]
pub mod option_iter {
    #[path = "option.rs"]
    pub mod inst;
}
pub mod result;
pub mod to_str;
pub mod to_bytes;
pub mod from_str;
pub mod util;

// Data structure modules

pub mod dvec;
#[path="iter-trait"]
pub mod dvec_iter {
    #[path = "dvec.rs"]
    pub mod inst;
}
pub mod dlist;
#[path="iter-trait"]
pub mod dlist_iter {
    #[path ="dlist.rs"]
    pub mod inst;
}
pub mod send_map;

// Concurrency
pub mod comm;
pub mod task {
    pub mod local_data;
    mod local_data_priv;
    pub mod spawn;
    pub mod rt;
}
pub mod future;
pub mod pipes;

// Runtime and language-primitive support

pub mod gc;
pub mod io;
pub mod libc;
pub mod os;
pub mod path;
pub mod rand;
pub mod run;
pub mod sys;
pub mod cast;
pub mod mutable;
pub mod flate;
pub mod repr;
pub mod cleanup;
pub mod reflect;

// Modules supporting compiler-generated code
// Exported but not part of the public interface

pub mod extfmt;
// The test harness links against core, so don't include runtime in tests.
#[cfg(notest)]
#[legacy_exports]
pub mod rt;

// Ideally not exported, but currently is.
pub mod private;

// For internal use, not exported.
mod unicode;
mod cmath;
mod stackwalk;

// Local Variables:
// mode: rust;
// fill-column: 78;
// indent-tabs-mode: nil
// c-basic-offset: 4
// buffer-file-coding-system: utf-8-unix
// End: