Introduced a chapter that describes how to perform callbacks from C to Rust
Further details on channel idea
Update guide-ffi.md

Simplified the first examples to demonstrate callbacks without other threads involved and shortened the elaboration about async callbacks.
Add span_note to ExtCtxt

It was the only span_* missing.
Fix misuse of character/byte in std::path.

Signed-off-by: OGINO Masanori <masanori.ogino@gmail.com>
document file!
Add operator trait constraints to std::num::{Zero, One} and document their appropriate use

Zero and One have precise definitions in mathematics. Documentation has been added to describe the appropriate uses for these traits and the laws that they should satisfy.

For more information regarding these identities, see the following wikipedia pages:

- http://wikipedia.org/wiki/Additive_identity
- http://wikipedia.org/wiki/Multiplicative_identity
Improve std::num::pow implementation

The implementation has been made more succinct and no longer requires Clone. The coverage of the associated unit test has also been increased to check more combinations of bases, exponents, and expected results.
Fix documentation typos
auto merge of #11670 : sfackler/rust/extctxt-span-note, r=alexcrichton

It was the only span_* missing.
Scan the entire crate for exported macros

It previously missed anything in an inner module.
auto merge of #11664 : bjz/rust/identities, r=alexcrichton

`Zero` and `One` have precise definitions in mathematics as the identities of the `Add` and `Mul` operations respectively. As such, types that implement these identities are now also required to implement their respective operator traits. This should reduce their misuse whilst still enabling them to be used in generalized algebraic structures (not just numbers). Existing usages of `#[deriving(Zero)]` in client code could break under these new rules, but this is probably a sign that they should have been using something like `#[deriving(Default)]` in the first place.

For more information regarding the mathematical definitions of the additive and multiplicative identities, see the following Wikipedia articles:

- http://wikipedia.org/wiki/Additive_identity
- http://wikipedia.org/wiki/Multiplicative_identity

Note that for floating point numbers the laws specified in the doc comments of `Zero::zero` and `One::one` may not always hold. This is true however for many other traits currently implemented by floating point numbers. What traits floating point numbers should and should not implement is an open question that is beyond the scope of this pull request.

The implementation of `std::num::pow` has been made more succinct and no longer requires `Clone`. The coverage of the associated unit test has also been increased to test for more combinations of bases, exponents, and expected results.
auto merge of #11673 : omasanori/rust/sep-doc, r=alexcrichton
Disabled the tests for the new code blocks
Don't emit landing pads with -Z no-landing-pads

Closes #11647
rustuv: Re-work sockaddr glue to not use malloc

This means we can purge even more C from src/rt!
auto merge of #11636 : alexcrichton/rust/purge-all-the-c, r=brson

This means we can purge even more C from src/rt!
Fix a pathological const checking case

The included test case would essentially never finish compiling without this
patch. It recursies twice at every ExprParen meaning that the branching factor
is 2^n

The included test case will take so long to parse on the old compiler that it'll
surely never let this crop up again.
Fix cross-compiled pretty tests

They need to read the metadata of cross-compiled crates, so the pretty things
need to have the right target.
auto merge of #11675 : alexcrichton/rust/fix-snap, r=cmr

They need to read the metadata of cross-compiled crates, so the pretty things
need to have the right target.