Commit graph

378 commits

Author SHA1 Message Date
Mazdak Farrokhzad
291e44b381
Rollup merge of #60023 - koalatux:nth-back, r=scottmcm
implement specialized nth_back() for Bytes, Fuse and Enumerate

Hi,

After my first PR has been successfully merged, here is my second pull request :-)

Also this PR contains some specializations for the problem discussed in #54054.
2019-04-19 06:03:12 +02:00
Taiki Endo
360432f1e8 libcore => 2018 2019-04-18 14:47:35 +09:00
Ralf Jung
d55e4b7a25 test sort_unstable in Miri 2019-04-17 09:47:36 +02:00
Adrian Friedli
2605537012
implement nth_back for Enumerate 2019-04-16 23:45:59 +02:00
Ralf Jung
9b21324db2 Miri now supports entropy, but is still slow 2019-04-16 20:04:17 +02:00
David Tolnay
cfd31fb4df
Include trailing comma in multiline Debug representation
This commit changes the behavior of Formatter::debug_struct,
debug_tuple, debug_list, debug_set, and debug_map to render trailing
commas in {:#?} mode, which is the dominant style in modern Rust code.

Before:

    Language {
        name: "Rust",
        trailing_commas: false
    }

After:

    Language {
        name: "Rust",
        trailing_commas: true,
    }
2019-04-05 06:45:40 -07:00
Mazdak Farrokhzad
2f37c5a358
Rollup merge of #55448 - Mokosha:SortAtIndex, r=bluss
Add 'partition_at_index/_by/_by_key' for slices.

This is an analog to C++'s std::nth_element (a.k.a. quickselect).

Corresponds to tracking bug #55300.
2019-04-03 04:36:09 +02:00
Mazdak Farrokhzad
5e8998a98d
Rollup merge of #59444 - cuviper:steps_between, r=scottmcm
Implement useful steps_between for all integers

We can use `usize::try_from` to convert steps from any size of integer.
This enables a meaningful `size_hint()` for larger ranges, rather than
always just `(0, None)`. Now they return the true `(len, Some(len))`
when it fits, otherwise `(usize::MAX, None)` for overflow.
2019-04-02 13:47:24 +02:00
Jean-Marie Comets
70fa616a23 Stabilize refcell_replace_swap feature, closes #43570 2019-03-31 10:54:14 +02:00
Mazdak Farrokhzad
f90ac4f04a
Rollup merge of #58717 - hellow554:nonzero_parse, r=oli-obk
Add FromStr impl for NonZero types

This is a WIP implementation because I do have some questions regarding the solution.

Somebody should ping the lang team on this I guess.
Please see the annotations on the code for more details.

Closes #58604
2019-03-28 13:35:29 +01:00
Josh Stone
413aaf3227
Rollup merge of #59393 - czipperz:refactor_tuple_comparison_tests, r=shepmaster
Refactor tuple comparison tests
2019-03-27 18:15:32 -07:00
Josh Stone
3d389f244a Test the size_hint of empty ranges too 2019-03-26 10:39:03 -07:00
Josh Stone
01162d86c5 Implement useful steps_between for all integers
We can use `usize::try_from` to convert steps from any size of integer.
This enables a meaningful `size_hint()` for larger ranges, rather than
always just `(0, None)`. Now they return the true `(len, Some(len))`
when it fits, otherwise `(usize::MAX, None)` for overflow.
2019-03-26 10:13:48 -07:00
Chris Gregory
c709a10434 Refactor tuple comparison tests 2019-03-25 13:00:57 -04:00
kennytm
cb2dde63d5
Rollup merge of #59328 - koalatux:iter-nth-back, r=scottmcm
Implement specialized nth_back() for Box and Windows.

Hi there, this is my first pull request to rust :-)

I started implementing some specializations for DoubleEndedIterator::nth_back() and these are the first two. The problem has been discussed in #54054 and nth_back() is tracked in #56995.

I'm stuck with the next implementation so I though I do a PR for the ones I'm confident with to get some feedback.
2019-03-24 19:00:10 +08:00
Mazdak Farrokhzad
a3581aca02
Rollup merge of #59280 - joshlf:sandbox/joshlf/stabilize-refcell-map-split, r=cramertj,Centril
Stabilize refcell_map_split feature

Closes #51476.
2019-03-19 15:17:00 +01:00
Mazdak Farrokhzad
fff8586193
Rollup merge of #58778 - xfix:exact_size_case_mapping_iter, r=SimonSapin
Implement ExactSizeIterator for ToLowercase and ToUppercase
2019-03-19 15:16:49 +01:00
Joshua Liebow-Feeser
de4be2cd85 Stabilize refcell_map_split feature
- Closes #51476
2019-03-18 15:06:34 -07:00
kennytm
7c009a4df7
Rollup merge of #59231 - matklad:copied, r=Centril
Stabilize Option::copied

closes https://github.com/rust-lang/rust/issues/57126
2019-03-16 22:42:00 +08:00
kennytm
6d4b7fa0cf
Rollup merge of #59206 - sntdevco:master, r=dtolnay
Improved test output
2019-03-16 22:40:57 +08:00
kennytm
0e57b7230d
Rollup merge of #59072 - RalfJung:miri-alloc-tests, r=kennytm
we can now skip should_panic tests with the libtest harness
2019-03-16 22:39:44 +08:00
Aleksey Kladov
08f264d576 Stabilize Option::copied
closes https://github.com/rust-lang/rust/issues/57126
2019-03-16 14:11:23 +03:00
sntdevco
2f52388671 Improved test output for libcore/num/int_macros 2019-03-15 16:38:37 +05:30
sntdevco
8ff2198bc7 Improved test output for libcore/ops 2019-03-15 16:38:23 +05:30
sntdevco
6d73a8f753 Improved test output for libcore/cell 2019-03-15 16:38:07 +05:30
Mazdak Farrokhzad
73feddb9d4
Rollup merge of #59138 - timvermeulen:simplify_select_fold1, r=sfackler
Simplify Iterator::{min, max}

This PR simplifies the `select_fold1` helper method used to implmement `Iterator::{min, min_by, min_by_key, max, max_by, max_by_key}` by removing the projection argument, which was only used by the implementations of `min_by_key` and `max_by_key`.

I also added tests to ensure that the stability as mentioned in the comments of `min` and `max` is preserved, and fixed the `iter::{bench_max, bench_max_by_key}` benchmarks which the compiler presumably was able to collapse into closed-form expressions. None of the benchmark results were impacted, I suspect their generated assembly didn't change.
2019-03-13 03:33:57 +01:00
Tim Vermeulen
1819250556 Add tests to ensure that Iterator::min and Iterator::max are stable 2019-03-12 19:25:44 +01:00
Sayan Nandan
365d918b31
Replace assert with assert_eq for better debugging 2019-03-12 10:08:57 +05:30
Pavel Krajcevski
3f306db3db Add initial implementation of 'sort_at_index' for slices -- analog to C++'s std::nth_element (a.k.a. quickselect)
Add some more notes to the documentation:

- Mention that the median can be found if we used `len() / 2`.
- Mention that this function is usually called "kth element" in other libraries.

Address some comments in PR:

- Change wording on some of the documentation
- Change recursive function into a loop

Update name to `partition_at_index` and add convenience return values.

Address reviewer comments:

- Don't swap on each iteration when searching for min/max element.
- Add some docs about when we panic.
- Test that the sum of the lengths of the output matches the length of the input.
- Style fix for for-loop.

Address more reviewer comments

Fix Rng stuff for test

Fix doc test build

Don't run the partition_at_index test on wasm targets

Miri does not support entropy for test partition_at_index
2019-03-11 10:31:21 -07:00
Ralf Jung
4888b1fb99 we can now skip should_panic tests with the libtest harness 2019-03-10 17:47:42 +01:00
Marcel Hellwig
7330525e8f
fixed tests again 2019-02-28 21:00:41 +01:00
Marcel Hellwig
ad240ea70c add feature flag to test 2019-02-28 14:47:32 +01:00
Marcel Hellwig
912ad6831e fixed nonzero tests 2019-02-28 07:45:33 +01:00
Marcel Hellwig
ce30d4e1b9
replaced nonzeroparseerror with regular interror 2019-02-27 18:37:35 +01:00
Oliver Middleton
911a633bb1
Remove copy paste error in char tests
Co-Authored-By: xfix <konrad@borowski.pw>
2019-02-27 14:44:20 +01:00
Konrad Borowski
988b3d5f9e Implement ExactSizeIterator for ToLowercase and ToUppercase 2019-02-27 14:30:15 +01:00
bors
00aae71f50 Auto merge of #58302 - SimonSapin:tryfrom, r=alexcrichton
Stabilize TryFrom and TryInto with a convert::Infallible empty enum

This is the plan proposed in https://github.com/rust-lang/rust/issues/33417#issuecomment-423073898
2019-02-25 20:24:10 +00:00
Marcel Hellwig
36bcbc352d
Add FromStr impl for NonZero types 2019-02-25 07:09:16 +01:00
Adrian Friedli
739ba0417a
implement nth_back for Windows 2019-02-24 00:28:04 +01:00
Mazdak Farrokhzad
f19bec89d7
Rollup merge of #58122 - matthieu-m:range_incl_perf, r=dtolnay
RangeInclusive internal iteration performance improvement.

Specialize `Iterator::try_fold` and `DoubleEndedIterator::try_rfold` to improve code generation in all internal iteration scenarios.

This changes brings the performance of internal iteration with `RangeInclusive` on par with the performance of iteration with `Range`:

 - Single conditional jump in hot loop,
 - Unrolling and vectorization,
 - And even Closed Form substitution.

Unfortunately, it only applies to internal iteration. Despite various attempts at stream-lining the implementation of `next` and `next_back`, LLVM has stubbornly refused to optimize external iteration appropriately, leaving me with a choice between:

 - The current implementation, for which Closed Form substitution is performed, but which uses 2 conditional jumps in the hot loop when optimization fail.
 - An implementation using a `is_done` boolean, which uses 1 conditional jump in the hot loop when optimization fail, allowing unrolling and vectorization, but for which Closed Form substitution fails.

In the absence of any conclusive evidence as to which usecase matters most, and with no assurance that the lack of Closed Form substitution is not indicative of other optimizations being foiled, there is no way
to pick one implementation over the other, and thus I defer to the statu quo as far as `next` and `next_back` are concerned.
2019-02-23 09:25:12 +01:00
kennytm
8ca56e1e02
Rollup merge of #58576 - SimonSapin:successors, r=Centril
Stabilize iter::successors and iter::from_fn

FCP: https://github.com/rust-lang/rust/issues/58045#issuecomment-464674773, https://github.com/rust-lang/rust/issues/55977#issuecomment-463964234
2019-02-20 11:59:26 +08:00
Simon Sapin
3906cb9187 Stabilize iter::from_fn
FCP: https://github.com/rust-lang/rust/issues/55977#issuecomment-463964234
2019-02-19 14:10:07 +01:00
Konrad Borowski
0cf1a912e3 Remove UB in test_ptr_subtraction test 2019-02-17 13:04:48 +01:00
Konrad Borowski
3281e62188 Remove UB in test_is_null test 2019-02-17 12:58:48 +01:00
Ralf Jung
4c1a1c3830 review failures in btree, string 2019-02-13 18:21:13 +01:00
Ralf Jung
e24af6c2b3 the formatting issue got fixed 2019-02-13 18:21:13 +01:00
Ralf Jung
72be9a607b review or fix remaining miri failures in libcore 2019-02-13 18:21:13 +01:00
Simon Sapin
c80a8f51dc Stabilize TryFrom and TryInto 2019-02-13 18:00:18 +01:00
Ralf Jung
7f5dc49214 review or fix miri failures in iter, slice, cell, time 2019-02-13 17:56:43 +01:00
Ralf Jung
26ade1cfaa mark failures expected due to panics 2019-02-13 17:56:43 +01:00