Commit graph

7380 commits

Author SHA1 Message Date
Phlosioneer
bbd64b2563 Slight modification to the as_ref example of std::option::Option
A user in a reddit thread was confused by the name of the variable
"num_as_int"; they thought the example was trying to convert the
string "10" as if it were binary 2 by calling str::len(). In reality,
the example is simply demonstrating how to take an immutable reference
to the value of an Option. The confusion comes from the coincidence
that the length of the string "10" is also its binary representation,
and the implication from the variable names that a conversion was
occuring ("num_as_str" to "num_as_int").

This PR changes the example number to 12 instead of 10, and changes
the variable name from "num_as_int" to "num_length" to better
communicate what the example is doing.

The reddit thread:
https://www.reddit.com/r/rust/comments/7zpvev/notyetawesome_rust_what_use_cases_would_you_like/dur39xw/
2018-02-24 11:37:38 -05:00
Manish Goregaokar
5fd8d18097
Rollup merge of #48157 - scottmcm:try-for-each, r=dtolnay
Add Iterator::try_for_each

The fallible version of `for_each` aka the stateless version of `try_fold`.  Inspired by @cuviper's comment in https://github.com/rust-lang/rust/pull/45379#issuecomment-338370020 as a more direct and obvious solution than `.map(f).collect::<Result<(), _>>()`.

Like `for_each`, no need for an `r` version thanks to overrides in `Rev`.

`iterator_try_fold` tracking issue: https://github.com/rust-lang/rust/issues/45594
2018-02-23 10:24:49 -08:00
bors
5de90898de Auto merge of #48343 - Mark-Simulacrum:release-step, r=kennytm
Update nightly to 1.26.0 and bootstrap from beta.
2018-02-22 23:25:39 +00:00
Guillaume Gomez
24c17cb1a8
Rollup merge of #48397 - ordovicia:pow_doc, r=GuillaumeGomez
Take 2^5 as examples in document of pow()

Fixes #48396 by taking 2^5 as examples.
2018-02-21 16:29:57 +01:00
Guillaume Gomez
d9f5eeb57e
Rollup merge of #48360 - redcape:redcape-count-doc-fix, r=cramertj
Fix count usize link typo in docs

The docs point to isize when the link should be going to usize instead. Fix the doc.
2018-02-21 16:29:55 +01:00
Guillaume Gomez
2a32060fb6
Rollup merge of #47379 - da-x:master, r=sfackler
Derive std::cmp::Reverse as Copy or Clone

If the type parameter is Copy or Clone, then `Reverse` should be too.
2018-02-21 16:29:45 +01:00
Hidehito Yabuuchi
7e51e7ddd6 Take 2^5 as examples in document of pow() (fixes #48396)
Current document takes 2^4, which is equal to 4^2.
This example is not very helpful for those unfamiliar with math words in English and thus rely on example codes.
2018-02-21 22:34:45 +09:00
Mark Simulacrum
33f5ceee1f stage0 cfg cleanup 2018-02-20 08:52:33 -07:00
Gil Cottle
3f931515df
Fix count usize link typo in docs 2018-02-19 20:51:48 +00:00
Guillaume Gomez
04256e7b9d
Rollup merge of #48282 - Centril:spelling-fix/iter-repeat-with, r=kennytm
Fix spelling in core::iter::repeat_with: s/not/note

Fixes spelling error in https://github.com/rust-lang/rust/pull/48156#discussion_r168718452.
Tracking issue: https://github.com/rust-lang/rust/issues/48169
2018-02-18 13:21:02 +01:00
bors
1ad094d81c Auto merge of #47687 - SimonSapin:panic-impl, r=sfackler
RFC 2070 part 1: PanicInfo and Location API changes

This implements part of https://rust-lang.github.io/rfcs/2070-panic-implementation.html
Tracking issue: https://github.com/rust-lang/rust/issues/44489

* Move `std::panic::PanicInfo` and `std::panic::Location` to a new `core::panic` module. The two types and the `std` module were already `#[stable]` and stay that way, the new `core` module is `#[unstable]`.
* Add a new `PanicInfo::message(&self) -> Option<&fmt::Arguments>` method, which is `#[unstable]`.
* Implement `Display` for `PanicInfo` and `Location`
2018-02-18 06:02:35 +00:00
Guillaume Gomez
7dd8c090e4
Rollup merge of #48260 - dns2utf8:add_link_to_yield, r=kennytm
[doc] Add link to yield_now

A convenient link.
2018-02-17 14:45:26 +01:00
Guillaume Gomez
01c7f3a345
Rollup merge of #48243 - rust-lang:steveklabnik-patch-1, r=kennytm
spelling fix in comment

r? @Manishearth
2018-02-17 14:45:24 +01:00
Guillaume Gomez
6db06f593b
Rollup merge of #48152 - antoyo:primitive-docs-relevant, r=QuietMisdreavus
Primitive docs relevant

This fixes the documentation to show the right types in the examples for many integer methods.

I need to check if the result is correct before we merge.
2018-02-17 14:45:21 +01:00
Mazdak Farrokhzad
6e27aa88a7 core::iter::repeat_with: fix spelling, s/not/note 2018-02-16 22:14:32 +01:00
Guillaume Gomez
a58409dd91 Notify users that this example is shared through integer types 2018-02-16 16:32:11 +01:00
Stefan Schindler
e812da0ed0 Force the link to std:🧵:yield_now() 2018-02-16 12:20:54 +01:00
Stefan Schindler
3bf989f4c9 Add link to yield_now 2018-02-16 10:30:31 +01:00
bors
efda9bae87 Auto merge of #45404 - giannicic:defaultimpl2, r=nikomatsakis
#37653 support `default impl` for specialization

this commit implements the second part of the `default impl` feature:

>  - a `default impl` need not include all items from the trait
>  - a `default impl` alone does not mean that a type implements the trait

The first point allows rustc to compile and run something like this:

```
trait Foo {
    fn foo_one(&self) -> &'static str;
    fn foo_two(&self) -> &'static str;
}

default impl<T> Foo for T {
    fn foo_one(&self) -> &'static str {
        "generic"
    }
}

struct MyStruct;

fn  main() {
    assert!(MyStruct.foo_one() == "generic");
}
```

but it shows a proper error if trying to call `MyStruct.foo_two()`

The second point allows a `default impl` to be considered as not implementing the `Trait` if it doesn't implement all the trait items.
The tests provided (in the compile-fail section) should cover all the possible trait resolutions.
Let me know if some tests is missed.

See [referenced ](https://github.com/rust-lang/rust/issues/37653) issue for further info

r? @nikomatsakis
2018-02-16 00:03:10 +00:00
Steve Klabnik
137f5bc64e
spelling fix in comment 2018-02-15 14:44:58 -05:00
Gianni Ciccarelli
220bb22e1b add Self: Trait<..> inside the param_env of a default impl 2018-02-15 15:31:05 +00:00
bors
1670a532dd Auto merge of #48203 - kennytm:rollup, r=kennytm
Rollup of 23 pull requests

- Successful merges: #47784, #47806, #47846, #48005, #48033, #48065, #48087, #48114, #48126, #48130, #48133, #48151, #48154, #48156, #48162, #48163, #48165, #48167, #48181, #48186, #48195, #48035, #48210
- Failed merges:
2018-02-15 13:35:20 +00:00
kennytm
03b089d220
Rollup merge of #48210 - jacob-hughes:clarify_sized_trait_in_api_docs, r=QuietMisdreavus
Clarified why `Sized` bound not implicit on trait's implicit `Self` type.

This part of the documentation was a little confusing to me on first read. I've added a couple lines for further explanation. Hopefully this makes things a bit clearer for new readers.
2018-02-15 14:36:48 +08:00
Jacob Hughes
38064a9a7c Review change - Expanded on explanation. 2018-02-14 19:14:25 +00:00
kennytm
ec36e7e972
Partially revert #47333.
Removed the `assume()` which we assumed is the cause of misoptimization in
issue #48116.
2018-02-15 00:04:18 +08:00
Jacob Hughes
288c0c3081 Clarified why Sized bound not implicit on trait's implicit Self type. 2018-02-14 15:50:26 +00:00
kennytm
bebd2fbfc8
Rollup merge of #48156 - Centril:feature/iterator_repeat_with, r=alexcrichton
Add std/core::iter::repeat_with

Adds an iterator primitive `repeat_with` which is the "lazy" version of `repeat` but also more flexible since you can build up state with the `FnMut`. The design is mostly taken from `repeat`.

r? @rust-lang/libs
cc @withoutboats, @scottmcm
2018-02-14 18:25:22 +08:00
kennytm
c4b211bdba
Rollup merge of #48151 - echochamber:update_range_example, r=estebank
Update ops range example to avoid confusion between indexes and values.

Makes clearer the numbers in the range refer to indexes, not the values at those indexes.
2018-02-14 18:25:19 +08:00
kennytm
3bcaaf47a1
Rollup merge of #48130 - ollie27:stab, r=Mark-Simulacrum
Correct a few stability attributes

* `core_float_bits`, `duration_core`, `path_component_asref`, and `repr_align` were stabalized in 1.25.0 not 1.24.0.
* Impls for `NonNull` involving unstable things should remain unstable.
* `Duration` should remain stable since 1.3.0 so it appears correctly in the `std` docs.
* `cursor_mut_vec` is an impl on only stable things so should be marked stable.
2018-02-14 18:25:16 +08:00
kennytm
bd3674e4de
Rollup merge of #48087 - scottmcm:range_is_empty, r=kennytm,alexcrichton
Add Range[Inclusive]::is_empty

During https://github.com/rust-lang/rfcs/pull/1980, it was discussed that figuring out whether a range is empty was subtle, and thus there should be a clear and obvious way to do it.  It can't just be ExactSizeIterator::is_empty (also unstable) because not all ranges are ExactSize -- such as `Range<i64>` and `RangeInclusive<usize>`.

Things to ponder:
- Unless this is stabilized first, this makes stabilizing ExactSizeIterator::is_empty more icky, since this hides that.
- This is only on `Range` and `RangeInclusive`, as those are the only ones where it's interesting.  But one could argue that it should be on more for consistency, or on RangeArgument instead.
- The bound on this is PartialOrd, since that works ok (see tests for float examples) and is consistent with `contains`.  But ranges like `NAN..=NAN`_are_ kinda weird.
- [x] ~~There's not a real issue number on this yet~~
2018-02-14 16:14:33 +08:00
Guillaume Gomez
9a30673d2b Add missing feature 2018-02-14 01:34:30 +01:00
Mazdak Farrokhzad
db13296b6f core::iter::repeat_with: fix missing word, see @Pazzaz's review 2018-02-13 06:20:17 +01:00
Mazdak Farrokhzad
91a4b9044d core::iter::repeat_with: tracking issue is #48169 2018-02-12 21:47:59 +01:00
Mazdak Farrokhzad
9cee79a7ff core::iter::repeat_with: document DoubleEndedIterator behavior 2018-02-12 18:03:56 +01:00
Antoni Boucher
146b81c2c6 Fix tidy errors 2018-02-12 08:07:10 -05:00
Scott McMurray
0bb818cc0b Add Iterator::try_for_each
The fallible version of for_each and the stateless version of try_fold.
2018-02-12 01:39:01 -08:00
Mazdak Farrokhzad
efa332038c core::iter::repeat_with: fix doc tests 2018-02-12 09:18:22 +01:00
Mazdak Farrokhzad
55c669c4d9 core::iter::repeat_with: fix tests some more 2018-02-12 09:15:13 +01:00
Mazdak Farrokhzad
f025eff21d core::iter::repeat_with: fix tests 2018-02-12 09:13:47 +01:00
Mazdak Farrokhzad
1af9ee1350 core::iter::repeat_with: derive Copy, Clone, Debug 2018-02-12 08:35:12 +01:00
Mazdak Farrokhzad
c4099ca4b1 core::iter::repeat_with: general fixes 2018-02-12 08:25:39 +01:00
Mazdak Farrokhzad
0f789aad2b add core::iter::repeat_with 2018-02-12 08:05:46 +01:00
Antoni Boucher
56e15de9f9 Make primitive types docs relevant (unsigned) 2018-02-11 21:53:30 -05:00
Guillaume Gomez
9931583468 Make primitive types docs relevant 2018-02-11 21:53:30 -05:00
Jason Schein
bd426f1d69 Update ops range example to avoid confusion between indexes and values. 2018-02-11 17:54:44 -08:00
Scott McMurray
22b0489f80 Add the emptiness condition to the docs; add a PartialOrd example with NAN 2018-02-10 16:32:05 -08:00
Oliver Middleton
45d5a420ad Correct a few stability attributes 2018-02-10 21:20:42 +00:00
kennytm
4a827188cc
Rollup merge of #47547 - varkor:infinite-iterators-warning-doc, r=frewsxcv
Document the behaviour of infinite iterators on potentially-computable methods

It’s not entirely clear from the current documentation what behaviour
calling a method such as `min` on an infinite iterator like `RangeFrom`
is. One might expect this to terminate, but in fact, for infinite
iterators, `min` is always nonterminating (at least in the standard
library). This adds a quick note about this behaviour for clarification.
2018-02-11 03:39:53 +08:00
kennytm
18d7be3381
Rollup merge of #48120 - matthiaskrgr:typos_src_1, r=alexcrichton
fix typos in src/{bootstrap,ci,etc,lib{backtrace,core,fmt_macros}}

via codespell
2018-02-11 00:53:05 +08:00
Matthias Krüger
7ee3e39f64 fix typos in src/{bootstrap,ci,etc,lib{backtrace,core,fmt_macros}} 2018-02-10 12:22:57 +01:00