Update docs to include Sized trait, which is needed

This commit is contained in:
Niko Matsakis 2014-09-15 18:52:20 -04:00
parent 48bc291a80
commit eafeb335a0

View file

@ -461,11 +461,12 @@ fn start(_argc: int, _argv: *const *const u8) -> int {
0
}
// These functions are invoked by the compiler, but not
// These functions and traits are used by the compiler, but not
// for a bare-bones hello world. These are normally
// provided by libstd.
#[lang = "stack_exhausted"] extern fn stack_exhausted() {}
#[lang = "eh_personality"] extern fn eh_personality() {}
#[lang = "sized"] trait Sized { }
# // fn main() {} tricked you, rustdoc!
```
@ -488,13 +489,14 @@ pub extern fn main(argc: int, argv: *const *const u8) -> int {
#[lang = "stack_exhausted"] extern fn stack_exhausted() {}
#[lang = "eh_personality"] extern fn eh_personality() {}
#[lang = "sized"] trait Sized { }
# // fn main() {} tricked you, rustdoc!
```
The compiler currently makes a few assumptions about symbols which are available
in the executable to call. Normally these functions are provided by the standard
library, but without it you must define your own.
xlibrary, but without it you must define your own.
The first of these two functions, `stack_exhausted`, is invoked whenever stack
overflow is detected. This function has a number of restrictions about how it
@ -508,6 +510,12 @@ mechanisms of the compiler. This is often mapped to GCC's personality function
information), but crates which do not trigger failure can be assured that this
function is never called.
The final item in the example is a trait called `Sized`. This a trait
that represents data of a known static size: it is integral to the
Rust type system, and so the compiler expects the standard library to
provide it. Since you are not using the standard library, you have to
provide it yourself.
## Using libcore
> **Note**: the core library's structure is unstable, and it is recommended to
@ -686,6 +694,7 @@ fn main(argc: int, argv: *const *const u8) -> int {
#[lang = "stack_exhausted"] extern fn stack_exhausted() {}
#[lang = "eh_personality"] extern fn eh_personality() {}
#[lang = "sized"] trait Sized {}
```
Note the use of `abort`: the `exchange_malloc` lang item is assumed to