doc: Update tutorial description of core

This commit is contained in:
Brian Anderson 2013-04-01 12:11:07 -07:00
parent 37634f3363
commit 243e601e51
2 changed files with 57 additions and 21 deletions

View File

@ -2554,26 +2554,65 @@ a hash representing the crate metadata.
## The core library ## The core library
The Rust [core] library is the language runtime and contains The Rust core library provides runtime features required by the language,
required memory management and task scheduling code as well as a including the task scheduler and memory allocators, as well as library
number of modules necessary for effective usage of the primitive support for Rust built-in types, platform abstractions, and other commonly
types. Methods on [vectors] and [strings], implementations of most used features.
comparison and math operators, and pervasive types like [`Option`]
and [`Result`] live in core.
All Rust programs link to the core library and import its contents, [`core`] includes modules corresponding to each of the integer types, each of
as if the following were written at the top of the crate. the floating point types, the [`bool`] type, [tuples], [characters], [strings],
[vectors], [managed boxes], [owned boxes],
and unsafe and borrowed [pointers]. Additionally, `core` provides
some pervasive types ([`option`] and [`result`]),
[task] creation and [communication] primitives,
platform abstractions ([`os`] and [`path`]), basic
I/O abstractions ([`io`]), [containers] like [`hashmap`],
common traits ([`kinds`], [`ops`], [`cmp`], [`num`],
[`to_str`], [`clone`]), and complete bindings to the C standard library ([`libc`]).
~~~ {.xfail-test} ### Core injection and the Rust prelude
extern mod core;
use core::*;
~~~
[core]: core/index.html `core` is imported at the topmost level of every crate by default, as
[vectors]: core/vec.html if the first line of each crate was
extern mod core;
This means that the contents of core can be accessed from from any context
with the `core::` path prefix, as in `use core::vec`, `use core::task::spawn`,
etc.
Additionally, `core` contains a `prelude` module that reexports many of the
most common core modules, types and traits. The contents of the prelude are
imported into every *module* by default. Implicitly, all modules behave as if
they contained the following prologue:
use core::prelude::*;
[`core`]: core/index.html
[`bool`]: core/bool.html
[tuples]: core/tuple.html
[characters]: core/char.html
[strings]: core/str.html [strings]: core/str.html
[`Option`]: core/option.html [vectors]: core/vec.html
[`Result`]: core/result.html [managed boxes]: core/managed.html
[owned boxes]: core/owned.html
[pointers]: core/ptr.html
[`option`]: core/option.html
[`result`]: core/result.html
[task]: core/task.html
[communication]: core/comm.html
[`os`]: core/os.html
[`path`]: core/path.html
[`io`]: core/io.html
[containers]: core/container.html
[`hashmap`]: core/hashmap.html
[`kinds`]: core/kinds.html
[`ops`]: core/ops.html
[`cmp`]: core/cmp.html
[`num`]: core/num.html
[`to_str`]: core/to_str.html
[`clone`]: core/clone.html
[`libc`]: core/libc.html
# What next? # What next?
@ -2585,10 +2624,7 @@ tutorials on individual topics.
* [Macros][macros] * [Macros][macros]
* [The foreign function interface][ffi] * [The foreign function interface][ffi]
There is further documentation on the [wiki], including articles about There is further documentation on the [wiki].
[unit testing] in Rust, [documenting][rustdoc] and [packaging][cargo]
Rust code, and a discussion of the [attributes] used to apply metadata
to code.
[borrow]: tutorial-borrowed-ptr.html [borrow]: tutorial-borrowed-ptr.html
[tasks]: tutorial-tasks.html [tasks]: tutorial-tasks.html

View File

@ -39,7 +39,7 @@ etc.
Additionally, `core` contains a `prelude` module that reexports many of the Additionally, `core` contains a `prelude` module that reexports many of the
most common core modules, types and traits. The contents of the prelude are most common core modules, types and traits. The contents of the prelude are
imported inte every *module* by default. Implicitly, all modules behave as if imported into every *module* by default. Implicitly, all modules behave as if
they contained the following prologue: they contained the following prologue:
use core::prelude::*; use core::prelude::*;