Commit graph

4149 commits

Author SHA1 Message Date
Steve Klabnik
78dd2ec2c2 review nits 2017-02-07 13:04:57 -05:00
Steve Klabnik
acd84c2f82 Re-write the doc index page
Clarify and reorganize.

Add the section for the bookshelf. More to come here in the near future!

Part of #39588
2017-02-06 15:05:37 -05:00
bors
4711ac314c Auto merge of #38436 - bluecereal:patch-1, r=frewsxcv
Update if-let.md

Calling if-let a combination of if and let is confusing, as some may be led to believe that it's a literal combination, instead of syntactic sugar added to the language as a convenience.  What's there to stop someone from thinking if-let is just if and let together?

I do think this article does a good job of implying what's really going on; however, I was only able to notice this after I had begun to understand if/while-let statements, courtesy of the Rust IRC chat.

Basically, this article lacks the clarity and explicitness an inexperienced programmer like me needs in order to understand the contents fully.  This is shown by my inability to understand the if-let concept from this page of the Book alone.

I think convenience, sugar, and (if-let != if + let) should all be made mention of in a clear, explicit manner. I lack confidence in my understanding of this issue, so I wrote just enough to hopefully get my thoughts across.
2017-02-06 06:55:10 +00:00
bluecereal
fb7f211c0c Update if-let.md 2017-02-05 20:20:43 -05:00
bors
696f5c1fc6 Auto merge of #38161 - durka:rustdoc-crate-attrs, r=alexcrichton
rustdoc: fix doctests with non-feature crate attrs

Fixes #38129.

The book says that any top-level crate attributes at the beginning of a doctest are moved outside the generated `fn main`, but it was only checking for `#![feature`, not `#![`.

These attributes previously caused warnings but were then ignored, so in theory this could change the behavior of doctests in the wild.
2017-02-05 05:54:44 +00:00
bors
5de2a24b2e Auto merge of #39287 - wesleywiser:move_cell, r=aturon
Extend Cell to work with non-Copy types

I'm not sure that I did this right but all of the tests pass.

I also had to move the `new()` function so that `Cell`s with non-`Copy` `T`s could be created. That wasn't in the RFC but I assume it needed to be done?
2017-02-03 03:23:35 +00:00
Guillaume Gomez
38ae9233b5 Rollup merge of #39196 - apasel422:nomicon, r=petrochenkov
Update nomicon to describe `#[may_dangle]`

CC #34761
r? @pnkfelix
2017-02-02 22:22:21 +01:00
Guillaume Gomez
5ada328d81 Rollup merge of #38823 - Freyskeyd:doc-missingInformationCfgTest, r=steveklabnik
Improve doc cfg(test) and tests directory

Hi,

I was facing a problem with my code organisation. I was using a tests directory and i defined some `#[cfg(test)]` in my `src/`. But i was not able to use it in my `tests` folder.

```bash
.
├── Cargo.lock
├── Cargo.toml
├── src
│   ├── lib.rs
│   └── test.rs
└── tests
    └── x.rs
```
> src/lib.rs
```rust
pub mod test;

fn tesst() {
    assert!(test::t());
}
```
> src/test.rs
```rust
pub fn t() -> bool { true }
```
> test/x.rs
```rust
extern crate testt;

use testt::test;
fn tesst() {
    assert!(test::t());
}
```

I was unable to compile using `cargo test`:
```bash
error[E0432]: unresolved import `testt::test`
 --> tests/x.rs:3:5
  |
3 | use testt::test;
  |     ^^^^^^^^^^^ no `test` in `testt`
```

If i remove the `tests` directory everything works fine. To use an utils module in your `tests` directory, you need to create a module in the directory (like `tests/utils.rs`). My `tests/x.rs` look like this now:

```rust
extern crate testt;

mod utils;

fn tesst() {
    assert!(utils::t());
}
```

And my tree:
```bash
.
├── Cargo.lock
├── Cargo.toml
├── src
│   └── lib.rs
└── tests
    ├── utils.rs
    └── x.rs
```

I think that thing must be documented in the book.

Ping:
- @badboy : Because he's the one who showed me the path
- @shahn : Because he helped me too to find the solution

Signed-off-by: Freyskeyd <simon.paitrault@iadvize.com>
2017-02-02 22:22:19 +01:00
Wesley Wiser
8b947a37c8 Update Cell references in the book 2017-02-01 22:53:39 -05:00
Wilfred Hughes
87bbb3c738 Minor grammar fix 'can not' -> 'cannot'
The previous version suggested that the compiler chooses not to check, rather than being unable to check.
2017-01-29 10:51:26 +00:00
Alex Crichton
7c75608cfb Rollup merge of #39344 - ollie27:links, r=steveklabnik
Fix a few links in the docs

r? @steveklabnik
2017-01-27 16:42:07 -08:00
Oliver Middleton
09b3903aec Fix a few links in the docs 2017-01-27 18:08:51 +00:00
est31
ff11f987c6 drop_in_place is stable now, don't #![feature] it in the nomicon and a test
It was stable since Rust 1.8.
2017-01-26 10:38:22 +01:00
Raphael Das Gupta
c4c86dd04c fix book: refer to add_two as "tested function"
rather than "test function", which would be `it_works`
2017-01-24 22:44:41 +01:00
Freyskeyd
b996a7ecec
Fix doc cfg(test) and tests directory
Signed-off-by: Freyskeyd <simon.paitrault@iadvize.com>
2017-01-24 21:04:38 +01:00
Steve Klabnik
e113038a36 Rollup merge of #39191 - cesarb:book/trait-objects-vtable-size-and-align, r=steveklabnik
book: size and align in trait object vtables are used

The book currently claims that the `size` and `align` fields in the
trait object vtable are not used, but this is false. These two fields
are used by the stable `mem::size_of_val` and `mem::align_of_val`
functions.

See the `ty::TyDynamic` case of the `glue::size_and_align_of_dst`
function in librustc_trans, which is used to implement both intrinsics
in the unsized case.

r? @steveklabnik
2017-01-23 16:40:49 -05:00
Steve Klabnik
9df2daf34c Rollup merge of #38993 - krdln:patch-1, r=steveklabnik
Add `&mut expr` to syntax index
2017-01-23 16:40:48 -05:00
Steve Klabnik
fb5b0d033f Rollup merge of #38956 - theduke:document-field-init-shorthand-38830, r=steveklabnik
Update struct_expr grammar for field init shorthand.

Part of the work for #38830 .

r? @steveklabnik
2017-01-23 16:40:47 -05:00
Steve Klabnik
12b46292c6 Rollup merge of #38794 - ConnyOnny:master, r=steveklabnik
book: match enum warning

Matching enums with named fields in the previous way yielded the "non_shorthand_field_patterns" warning.
The new code shows the shorthand syntax as well as field renaming, so it should be exhaustive ;-)
2017-01-23 16:40:46 -05:00
Eijebong
cf4d90db52 Fix minor typo 2017-01-22 17:27:29 +01:00
bluecereal
ebf07da0a5 Update if-let.md 2017-01-21 02:24:48 -05:00
Oliver Middleton
543eca2eab linkchecker: Fix checking links which are just fragments
Also fix a typo which linkchecker should have caught.
2017-01-20 08:36:09 +00:00
Cesar Eduardo Barros
c7b092b47d No need to mention how these fields are used 2017-01-19 22:45:57 -02:00
Andrew Paseltiner
65147b673b
Update nomicon to describe #[may_dangle] 2017-01-19 18:09:23 -05:00
Cesar Eduardo Barros
465d24e1a0 book: size and align in trait object vtables are used
The book currently claims that the `size` and `align` fields in the
trait object vtable are not used, but this is false. These two fields
are used by the stable `mem::size_of_val` and `mem::align_of_val`
functions.

See the `ty::TyDynamic` case of the `glue::size_and_align_of_dst`
function in librustc_trans, which is used to implement both intrinsics
in the unsized case.
2017-01-19 18:16:11 -02:00
Bjorn Tipling
0dad9dcf9e An update to patterns documentation
As it is written it creates a lot of confusion.
2017-01-15 12:27:41 -08:00
Guillaume Gomez
a861eb0aac Rollup merge of #39027 - behnam:typo, r=frewsxcv
[libcollections] [doc] Fix typo in documentation

Replace two instances of `an raw` with `a raw` in documentation blocks.
2017-01-13 10:42:34 +01:00
Behnam Esfahbod
6022aeb9ab [libcollections] [doc] Fix typo in documentation 2017-01-12 19:23:35 -08:00
Ben Wiederhake
09df83b247 Fix some typos in Nomicon 2017-01-11 18:07:08 +01:00
krdln
4093bafe63 Add &mut expr to syntax index 2017-01-11 15:56:06 +01:00
theduke
487ca5ccc5 Update struct_expr grammar for field init shorthand. 2017-01-10 13:09:17 +01:00
Seo Sanghyeon
ac2723886f Rollup merge of #38816 - Manishearth:coercion-doc, r=GuillaumeGomez
Add more docs for CoerceUnsized and Unsize

here be dragons

r? @ubsan @steveklabnik
2017-01-10 20:27:43 +09:00
bors
78c892d865 Auto merge of #38138 - rkruppe:no_std-no_loop, r=steveklabnik
book: use abort() over loop {} for panic

Due to #28728 `loop {}` is very risky and can lead to fun debugging experiences such as #38136. Besides, aborting is probably better behavior than an infinite loop.

r? @steveklabnik
2017-01-10 06:50:59 +00:00
Robin Kruppe
893f42a834 book: use abort() over loop {} for panic
Due to #28728 loop {} is very risky and can lead to fun debugging experiences like in #38136. Besides, aborting is probably better behavior than an infinite loop.
2017-01-04 23:53:44 +01:00
Steve Klabnik
3075c1f65e Document custom derive.
These are some bare-bones documentation for custom derive, needed
to stabilize "macros 1.1",
https://github.com/rust-lang/rust/issues/35900

The book chapter is based off of a blog post by @cbreeden,
https://cbreeden.github.io/Macros11/

Normally, we have a policy of not mentioning external crates in
documentation. However, given that syn/quote are basically neccesary
for properly using macros 1.1, I feel that not including them here
would make the documentation very bad. So the rules should be bent
in this instance.
2017-01-04 17:34:30 -05:00
Manish Goregaokar
07e844f95f Add more docs for CoerceUnsized and Unsize 2017-01-04 02:42:10 -08:00
bors
468227129d Auto merge of #38066 - bluss:string-slice-error, r=sfackler
Use more specific panic message for &str slicing errors

Separate out of bounds errors from character boundary errors, and print
more details for character boundary errors.

It reports the first error it finds in:

1. begin out of bounds
2. end out of bounds
3. begin <= end violated
3. begin not char boundary
5. end not char boundary.

Example:

    &"abcαβγ"[..4]

    thread 'str::test_slice_fail_boundary_1' panicked at 'byte index 4 is not
    a char boundary; it is inside 'α' (bytes 3..5) of `abcαβγ`'

Fixes #38052
2017-01-03 23:51:42 +00:00
Constantin
e7d60c00c6 book: match enum warning removed
Matching enums with named fields in the previous way yielded the "non_shorthand_field_patterns" warning.
The new code shows the shorthand syntax as well as field renaming, so it should be exhaustive ;-)
2017-01-03 07:19:45 +01:00
Clar Charr
8ffc3e7790 Reword 'stupid' and 'crazy' in docs. 2017-01-02 16:29:19 -05:00
Alex Crichton
2068e1c251 Rollup merge of #38662 - agl:patch-2, r=frewsxcv
Use "an" before "i32"

(Minor typo fix.)

Since the word `i32` starts with a vowel, the indefinite article should use "an", not "a" \[[1](http://www.dictionary.com/browse/an)\]. (Previously there was one instance of "an i32" and two instances of "a i32", so at least something is wrong!) Since I believe that "an" is the correct form, I aligned everything with that.
2016-12-29 17:26:34 -08:00
Alex Crichton
7d14e3a1e6 Rollup merge of #38659 - agl:patch-1, r=apasel422
Add missing apostrophe.

(Minor typo fix.)

The "support" in this case is possessed by the "programmer", and that ownership should be indicated by an apostrophe.
2016-12-29 17:26:33 -08:00
Alex Crichton
1c2a6f9e9d Rollup merge of #38630 - frewsxcv:variadic, r=steveklabnik
Document foreign variadic functions in TRPL and the reference.

Fixes https://github.com/rust-lang/rust/issues/38485.
2016-12-29 17:26:24 -08:00
Adam Langley
57b53fdd9e Use "an" before "i32"
(Minor typo fix.)

Since the word `i32` starts with a vowel, the indefinite article should use "an", not "a" \[[1](http://www.dictionary.com/browse/an)\]. (Previously there was one instance of "an i32" and two instances of "a i32", so at least something is wrong!) Since I believe that "an" is the correct form, I aligned everything with that.
2016-12-28 12:57:50 -08:00
Adam Langley
ee2abe85a6 Add missing apostrophe.
(Minor typo fix.)

The "support" in this case is possessed by the "programmer", and that ownership should be indicated by an apostrophe.
2016-12-28 11:11:17 -08:00
Corey Farwell
5cdf128410 Document foreign variadic functions in TRPL and the reference.
Fixes https://github.com/rust-lang/rust/issues/38485.
2016-12-27 00:05:53 -08:00
kellerkindt
20abf050e7 And suddenly a german word :O
"verboten" is german for "forbidden"
2016-12-27 02:26:30 +01:00
Steve Klabnik
637818fd85 Rollup merge of #38568 - chris-morgan:fix-markdown-lists, r=frewsxcv
Fix Markdown list formatting.

The Markdown engine used by the book can cope with a single leading space on the list marker:

    Like this:

     * List item

    Rather than like this:

    * List item

… but it’s not the typical convention employed in the book, and moreover the Markdown engine used for producing the error index *can’t* cope with it (its behaviour looks like a bug, as it appears to lose one of the two line breaks as well, but that’s immaterial here).

So, we shift to a single convention which doesn’t trigger bugs in the Markdown renderer.

----

See https://doc.rust-lang.org/error-index.html#E0458 and https://doc.rust-lang.org/error-index.html#E0101 for the bad current rendering in the error index.
2016-12-24 14:29:33 -05:00
Steve Klabnik
685027a23e Rollup merge of #38013 - wezm:simplify-test-notes, r=steveklabnik
Simplify notes on testing and concurrency

The start of the notes on tests running concurrently, added in https://github.com/rust-lang/rust/pull/37766 read a little awkwardly. This PR fixes that and simplifies the wording a bit.

r? @steveklabnik
2016-12-24 14:29:20 -05:00
Steve Klabnik
639568cb07 Rollup merge of #37956 - tshepang:patch-2, r=steveklabnik
book: replace example I do not understand
2016-12-24 14:29:19 -05:00
Tshepang Lekhonkhobe
d8ee0745f7 book: replace example I do not understand 2016-12-23 22:32:27 +02:00