Commit graph

4064 commits

Author SHA1 Message Date
Reza Akhavan
48b5192cf7 Minor grammar fix to ffi.md 2016-11-12 18:24:16 -08:00
Eduard-Mihai Burtescu
69717bbded Rollup merge of #37708 - oli-obk:box_free, r=eddyb
change the `box_free` lang item to accept pointers to unsized types

in miri we use the `box_free` lang item as the destructor for `Box` objects, since the function's api matches that of an `fn drop(&mut self)` in a hypothetical `impl<T: ?Sized> Drop for Box<T>` exactly.

This works fine except if we insert a check in the `size_of` intrinsic to ensure that it is only called with sized types, since the `box_free` lang item calls that intrinsic.

cc @eddyb

no clue who to r? here, probably lang team?
2016-11-12 10:38:44 +02:00
Eduard-Mihai Burtescu
16ae078fe9 Rollup merge of #37503 - nwin:patch-3, r=steveklabnik
Remove remark about poor code style

The current wording [seems to be confusing](https://www.reddit.com/r/rust/comments/5aat03/why_is_implementing_traits_on_primitive_types/). As an explanation when and why this could be considered as poor style would go beyond of the scope of this chapter I suggest to remove this remark.
2016-11-12 10:38:37 +02:00
Eduard-Mihai Burtescu
66da9a2911 Rollup merge of #37368 - trotter:patch-1, r=steveklabnik
Update testing.md to reflect changes to cargo new

`cargo new` now creates a `src/lib.rs` with a `tests` module by default. I've updated the earlier examples in this doc to reflect this. However, I don't know how we want to approach the "introduction" to idiomatic testing that follows in "the tests module" section. I _think_ it should be broken apart, with the module concept being introduced early on, and the `super` concept being addressed when we hit the `add_two` example. I'd like to get agreement on that being the right approach before I do it though.

I _also_ removed the `#fn main() {}` hidden at the beginning of each example, as these cause Rust Playground to not treat the file as a set of tests that it can run. Removing it _should_ cause Rust Playground to display a "Test >" button in the top left when a user runs the code, which will allow them to see the test runner output.
2016-11-12 10:38:37 +02:00
nwin
5cf07f1d60 Update patch with example. 2016-11-11 18:21:39 +01:00
Oliver 'ker' Schneider
323c20c8a4 [breaking-change] change the box_free item to accept pointers to unsized types 2016-11-11 13:36:10 +01:00
Trotter Cashion
2a832a03c5 Ignore tests failing due to lack of fn main
While the commit message on this one sounds terrible, it's really not so
bad. The issue is that our test runner _expects_ a `fn main() {}` in
code blocks that it'll test, but this code really shouldn't have them.
If it did, then clicking the "play" link in the docs would result in
play.rust-lang.org not treating this code as a test example to be run.
2016-11-10 19:08:45 -08:00
Trotter Cashion
4cf764470a Remove extraneous word 2016-11-10 07:55:20 -08:00
Trotter Cashion
dd9280920f Change project path for consistency
I had used `/tmp/adder` for my previous commits. Flipped over to
`/home/you/projects/adder` for consistency with other parts of testing.md
2016-11-10 07:52:51 -08:00
Trotter Cashion
35903bb9aa Remove mod tests from earlier sections
The narrative flows better if we follow what @steveklabnik is doing in
rust-lang/book#288. Therefore, I completely copied it.
2016-11-10 07:48:01 -08:00
Trotter Cashion
d9c60ca06c Instruct play.rust-lang.org to treat code as tests
Without these changes, play.rust-lang.org (as of today) would wrap
our examples in `fn main() {}`. This prevents the user from being able
to easily run the tests.
2016-11-10 07:30:20 -08:00
Eduard-Mihai Burtescu
e733667210 Rollup merge of #37664 - est31:master, r=nrc
Document the question mark operator in reference and the book's syntax index

The question mark operator will be stabilized for the Rust 1.13 release (unfortunately). Even though I don't like the operator, it still should be documented in the syntax index in the book and in the reference.

Maybe there are people who also want to change the book's chapters on error handling, depending on their views of what idiomatic error handling is, now that the operator is stable, but I don't want to and I'd prefer to keep this PR focused on the reference and syntax index only.

Please also apply this PR to the beta branch of rust.
2016-11-10 03:46:28 +02:00
est31
1e9aad752b Document the question mark operator 2016-11-09 08:37:05 +01:00
Steve Klabnik
d2fd20152b Rollup merge of #37601 - brson:book-without-tiers, r=steveklabnik
book: Removed platform compatibility table, link to the forge

The content is duplicated, and it doesn't need to be in this location.
It's mostly trivia that doesn't apply to most of the audience.

The forge is up to date.

r? @steveklabnik cc @alexcrichton
2016-11-08 16:20:57 -05:00
Steve Klabnik
2b2e9fc400 Rollup merge of #37483 - xfix:patch-1, r=steveklabnik
Match guessing game output to newest language version

Cargo now informs that it has finished, and there is new error format.
2016-11-08 16:20:56 -05:00
Steve Klabnik
b2db5b9ffa Rollup merge of #37425 - polo-language:doc, r=GuillaumeGomez
Add error note to illegal code snippet

Mark intentionally invalid code snippet in documentation as such with a comment. Similar comments used elsewhere in this file.

r? @steveklabnik
2016-11-08 16:20:56 -05:00
Steve Klabnik
8fd202615f Rollup merge of #35102 - steveklabnik:ref_warning, r=aturon
Make it clear that the reference isn't normative

Any time someone edits the reference, it has to be taken very seriously,
since it's the closest thing we have to a specification. This commit
adds language which indicates that this is not a normative document,
which makes it easier to make tweaks without worrying about forever
harming the future of Rust by painting ourselves in a corner.

r? @aturon
2016-11-08 16:20:56 -05:00
Trotter Cashion
b1d0c5bb38 Update testing.md to reflect changes to cargo new
`cargo new` now creates a `src/lib.rs` with a `tests` module by default. I've updated the earlier examples in this doc to reflect this. However, I don't know how we want to approach the "introduction" to idiomatic testing that follows in "the tests module" section. I _think_ it should be broken apart, with the module concept being introduced early on, and the `super` concept being addressed when we hit the `add_two` example. I'd like to get agreement on that being the right approach before I do it though.

I _also_ removed the `#fn main() {}` hidden at the beginning of each example, as these cause Rust Playground to not treat the file as a set of tests that it can run. Removing it _should_ cause Rust Playground to display a "Test >" button in the top left when a user runs the code, which will allow them to see the test runner output.
2016-11-08 07:04:12 -08:00
bors
38a959a543 Auto merge of #36843 - petrochenkov:dotstab, r=nikomatsakis
Stabilize `..` in tuple (struct) patterns

I'd like to nominate `..` in tuple and tuple struct patterns for stabilization.
This feature is a relatively small extension to existing stable functionality and doesn't have known blockers.
The feature first appeared in Rust 1.10 6 months ago.
An example of use: https://github.com/rust-lang/rust/pull/36203

Closes https://github.com/rust-lang/rust/issues/33627
r? @nikomatsakis
2016-11-08 02:06:45 -08:00
bors
161f2623bd Auto merge of #37386 - johnthagen:Self-reference-example, r=GuillaumeGomez
Add example using Self to reference

When I first came across `Self` I had a hard time finding references to it in the docs (and it's also been asked about on [StackOverflow](http://stackoverflow.com/questions/32304595/whats-the-difference-between-self-and-self).

I hope this example provides someone who comes across it for the first time a little more help.  If there is a better way to show an example actually using `Self`, I'm happy to modify this.  It was just the simplest place to start I could see.
2016-11-06 02:28:58 -08:00
johnthagen
434c314405 Use From trait as an example usage of Self. 2016-11-05 18:21:17 -04:00
Brian Anderson
74e3faa03a book: Removed platform compatibility table, link to the forge
The content is duplicated, and it doesn't need to be in this location.
It's mostly trivia that doesn't apply to most of the audience.

The forge is up to date.
2016-11-04 23:24:18 -07:00
Alex Crichton
c0bc35a364 Rollup merge of #37255 - mbrubeck:doc-edit, r=steveklabnik
Fix some mistakes in HRTB docs

The example code for higher-ranked trait bounds on closures had an unnecessary `mut` which was confusing, and the text referred to an mutable reference which does not exist in the code (and isn't needed).  Removed the `mut`s and fixed the text to better describe the actual error for the failing example.

Thanks to csd_ on IRC for pointing out these problems!

r? @steveklabnik
2016-11-04 16:49:28 -07:00
Angelo Polo
635ed480b9 Add error note to illegal code snippet 2016-11-03 09:08:13 -04:00
Vadim Petrochenkov
74bb594563 Stabilize .. in tuple (struct) patterns 2016-11-03 01:38:15 +03:00
Guillaume Gomez
f5c192a4b7 Rollup merge of #37495 - buntine:master, r=steveklabnik
Commented out final 'main' function in order to fit within pattern of…

… other examples and prevent incorrect indentation
2016-11-01 16:15:52 +01:00
Guillaume Gomez
d2f5d26a71 Rollup merge of #37485 - xfix:patch-2, r=steveklabnik
Don't mention "*" dependency version in guessing game example

It's a bad practice as far [RFC 1241](https://github.com/rust-lang/rfcs/blob/master/text/1241-no-wildcard-deps.md) is concerned, and introducing it in early tutorial may as well make it feel legitimate.
2016-11-01 16:15:52 +01:00
nwin
1b39c0a602 Remove remark about poor code style
The current wording [seems to be confusing](https://www.reddit.com/r/rust/comments/5aat03/why_is_implementing_traits_on_primitive_types/). As an explanation when and why this could be considered as poor style would go beyond of the scope of this chapter I suggest to remove this remark.
2016-10-31 19:43:50 +01:00
Bunts Thy Unholy
8483732c9a Removed commented main functions entirely. This fits in with other examples in the Closures section 2016-10-31 23:41:38 +11:00
Bunts Thy Unholy
32fb2527d9 Commented out final 'main' function in order to fit within pattern of other examples and prevent incorrect indentation 2016-10-31 22:45:03 +11:00
Konrad Borowski
9cc98612d7 Don't mention "*" dependency version in guessing game example
It's a bad practice as far [RFC 1241] is concerned, and introducing it
in early tutorial may as well make it feel legitimate.

[RFC 1241]: https://github.com/rust-lang/rfcs/blob/master/text/1241-no-wildcard-deps.md
2016-10-30 15:24:13 +01:00
Pieter Frenssen
956d44fb17 Update "Testing" chapter for 1.12
I followed the "Testing" chapter using Rust 1.12.1 but there are some differences. By default the `tests` module is now also generated by `cargo new`, and the console output is updated.
2016-10-30 15:42:31 +02:00
Konrad Borowski
5704a531fd doc: guessing-game.md: Match output to newest language version
Cargo now informs that it has finished, and there is new error format.
2016-10-30 12:57:19 +01:00
bors
75a87c54d0 Auto merge of #37378 - petrochenkov:nopat, r=eddyb
Prohibit patterns in trait methods without bodies

They are not properly type checked
```rust
trait Tr {
    fn f(&a: u8); // <- This compiles
}
```
, mostly rejected by the parser already and generally don't make much sense.
This PR is kind of a missing part of https://github.com/rust-lang/rust/pull/35015.

Given the [statistics from crater](https://github.com/rust-lang/rust/pull/37378#issuecomment-256154994), the effect of this PR is mostly equivalent to improving `unused_mut` lint.

cc https://github.com/rust-lang/rust/issues/35078#issuecomment-255707355 https://github.com/rust-lang/rust/pull/35015 https://github.com/rust-lang/rfcs/pull/1685 https://github.com/rust-lang/rust/issues/35203
r? @eddyb
2016-10-29 05:41:05 -07:00
Federico Mena Quintero
9f8d4ee74d reference: Mention --crate-type=cdylib in the Linkage section 2016-10-27 20:23:23 -05:00
Vadim Petrochenkov
811a2b91de Prohibit patterns in trait methods without bodies 2016-10-26 20:55:16 +03:00
Zoffix Znet
22ce98d0e7 Fix typo 2016-10-25 10:03:55 -04:00
Jonathan Turner
91c7a8270b Rollup merge of #37228 - loggerhead:patch-1, r=steveklabnik
Fix a error of 'book/deref-coercions.html'

The original sentence is:

> This example has two conversions: `Rc<String>` to `String` and then `String` to `&str`.

But it should be

> This example has two conversions: `Rc<String>` to `String` and then `String` to `str`.

or

> This example has two conversions: `&Rc<String>` to `&String` and then `&String` to `&str`.

I think the latter is more clearly.

r? @steveklabnik
2016-10-24 15:41:28 -07:00
Vangelis Katsikaros
cf0fc72a3e TRPL: guessing game: minor clarification 2016-10-20 18:00:12 +03:00
Paul Osborne
d79ec7e310 Fix grammatical errors in tests directory docs 2016-10-19 13:39:27 -05:00
Matt Brubeck
f89ba5da4a Fix some mistakes in HRTB docs
The example code for higher-ranked trait bounds on closures had an
unnecessary `mut` which was confusing, and the text referred to an
mutable reference which does not exist in the code (and isn't needed).
Removed the `mut`s and fixed the text to better describe the actual
error for the failing example.
2016-10-18 10:56:12 -07:00
Guillaume Gomez
9569ea0d2f Rollup merge of #37194 - johnthagen:fix-const-static-header, r=bluss
Remove un-rendered ticks from "const and static" doc title

Related to #37116 and #37119.

Ticks in the titles are not correctly rendered

![const-static-render](https://cloud.githubusercontent.com/assets/10340167/19412643/63e385a2-92e8-11e6-81f1-16802f803aad.png)
2016-10-17 23:07:53 +02:00
loggerhead
0d3bdc6c3e Fix a error of 'book/deref-coercions.html'
The original sentence is:

> This example has two conversions: `Rc<String>` to `String` and then `String` to `&str`. 

But it should be

> This example has two conversions: `Rc<String>` to `String` and then `String` to `str`. 

or 

> This example has two conversions: `&Rc<String>` to `&String` and then `&String` to `&str`. 

I think the latter is more clearly.
2016-10-17 11:16:36 +08:00
johnthagen
d001e8ad17 Remove un-rendered ticks from title. 2016-10-15 15:00:37 -04:00
Oliver Middleton
0b2746c8db rustdoc: Improve playground run buttons
The main change is to stop using javascript to generate the URLs and use
rustdoc instead.

This also adds run buttons to the error index examples.
2016-10-15 18:32:03 +01:00
Jonathan Turner
6822769263 Rollup merge of #37119 - durka:patch-31, r=steveklabnik
book: remove backticks in Type Aliases header

Fix #37116.
2016-10-14 12:07:08 -07:00
Jonathan Turner
71a183f8e9 Rollup merge of #36755 - Rantanen:master, r=GuillaumeGomez
Explain motivation behind lifetimes

Start the lifetime section with an explanation of the issues that lack of explicit lifetimes cause and how the explicit lifetimes solve these.

----------------

I had really hard time figuring out why I would need to care about the explicit reference lifetimes when going through the book at first. With strong background in C++, I'm familiar with the dangling reference problem - but given the section seems to focus more on the lifetime syntax and various ways to define lifetimes on functions and structs, I was unable to understand how they are used to solve the reference problem.

This PR is an attempt at getting the reader to understand what the explicit lifetimes are used for and why they are an awesome thing instead of a bit of syntax that just has to be written.

It's been less than a week that I've been diving into Rust so I'm far from certain about the terminology and technical correctness. I tried mimicking the existing terminology from the lifetimes section, but still no promises on getting it right.
2016-10-14 12:07:07 -07:00
Mikko Rantanen
cb90723f90 Explain motivation behind lifetimes
Start the lifetime section with an explanation of the issues that
lack of explicit lifetimes cause and how lifetimes alleviate these.
2016-10-13 01:37:13 +03:00
Alex Crichton
9d70ff384f Rollup merge of #36995 - nrc:stable, r=@nikomatsakis
stabilise ?, attributes on stmts, deprecate Reflect

r? @nikomatsakis
2016-10-12 14:07:55 -07:00
Alex Burka
1eb36b80a4 book: remove backticks in Type Aliases header
Fix #37116.
2016-10-12 13:44:08 -04:00