about summary refs log tree commit diff
path: root/src/libcore
AgeCommit message (Collapse)AuthorLines
2017-06-01Rollup merge of #42275 - scottmcm:try-trait, r=nikomatsakisCorey Farwell-17/+67
Lower `?` to `Try` instead of `Carrier` The easy parts of https://github.com/rust-lang/rfcs/pull/1859, whose FCP completed without further comments. Just the trait and the lowering -- neither the error message improvements nor the insta-stable impl for Option nor exhaustive docs. Based on a [github search](https://github.com/search?l=rust&p=1&q=question_mark_carrier&type=Code&utf8=%E2%9C%93), this will break the following: - https://github.com/pfpacket/rust-9p/blob/00206e34c680198a0ac7c2f066cc2954187d4fac/src/serialize.rs#L38 - https://github.com/peterdelevoryas/bufparse/blob/b1325898f4fc2c67658049196c12da82548af350/src/result.rs#L50 The other results appear to be files from libcore or its tests. I could also leave Carrier around after stage0 and `impl<T:Carrier> Try for T` if that would be better. r? @nikomatsakis Edit: Oh, and it might accidentally improve perf, based on https://github.com/rust-lang/rust/issues/37939#issuecomment-265803670, since `Try::into_result` for `Result` is an obvious no-op, unlike `Carrier::translate`.
2017-05-31Simplify helper functionsIrfan Hudda-15/+13
Based on @scottmcm 's suggestion
2017-05-31Rollup merge of #42329 - rap2hpoutre:patch-6, r=steveklabnikMark Simulacrum-2/+2
fix links to "module-level documentation" see https://github.com/rust-lang/rust/issues/42267
2017-05-31Rollup merge of #42315 - scottmcm:rangefrom-sizehint, r=alexcrichtonMark Simulacrum-1/+8
RangeFrom should have an infinite size_hint Before, ```rust (0..).take(4).size_hint() == (0, Some(4)) ``` With this change, ```rust (0..).take(4).size_hint() == (4, Some(4)) ```
2017-05-31Rollup merge of #42252 - stjepang:clarify-alignof-docs, r=nikomatsakisMark Simulacrum-4/+4
Clarify the docs for align_of and its variants It's okay to have unaligned raw pointers and then use `ptr::write_unaligned` and `ptr::read_unaligned`. However, using unaligned `&T` and `&mut T` would be undefined behavior. The current documentation seems to indicate that everything has to be aligned, but in reality only references do. This PR changes the text of docs accordingly. r? @sfackler
2017-05-31Rollup merge of #42126 - clarcharr:into_docs, r=steveklabnikMark Simulacrum-1/+37
Clarify docs on implementing Into. This was suggested by @dtolnay in #40380. This explicitly clarifies in what circumstances you should implement `Into` instead of `From`.
2017-05-31fix links to "module-level documentation"Raphaël Huchet-2/+2
2017-05-31Give the `try_trait` feature its own tracking issueScott McMurray-7/+7
2017-05-30Add 'the'Stjepan Glavina-4/+4
2017-05-30RangeFrom should have an infinite size_hintScott McMurray-1/+8
This makes the size_hint from things like `take` more precise.
2017-05-28Clarify docs on implementing Into.Clar Charr-1/+37
2017-05-28restore old behaviourDjzin-18/+1
2017-05-28restore old behaviour for sizes < 128Djzin-41/+34
2017-05-28Auto merge of #42167 - scottmcm:iter-stepby-sizehint, r=alexcrichtonbors-1/+95
Override size_hint and propagate ExactSizeIterator for iter::StepBy Generally useful, but also a prerequisite for moving a bunch of unit tests off `Range*::step_by`. A small non-breaking subset of https://github.com/rust-lang/rust/pull/42110 (which I closed). Includes two small documentation changes @ivandardi requested on that PR. r? @alexcrichton
2017-05-27Rollup merge of #42260 - stjepang:document-cmp-traits-agreement, r=alexcrichtonMark Simulacrum-2/+14
Docs: impls of PartialEq/PartialOrd/Ord must agree Fixes #41270. This PR brings two improvements to the docs: 1. Docs for `PartialEq`, `PartialOrd`, and `Ord` clarify that their implementations must agree. 2. Fixes a subtle bug in the Dijkstra example for `BinaryHeap`, where the impls are inconsistent. Thanks @Rufflewind for spotting the bug! r? @alexcrichton cc @frankmcsherry
2017-05-27better respect alignment for copying tailDjzin-25/+37
2017-05-27Docs: impls of PartialEq/PartialOrd/Ord must agreeStjepan Glavina-2/+14
2017-05-27Merge remote-tracking branch 'upstream/master' into fast-swapDjzin-2389/+12008
2017-05-27copy tail bytes better for aligned typesDjzin-0/+21
2017-05-27Clarify the docs for align_of and its variantsStjepan Glavina-4/+4
2017-05-26Auto merge of #42245 - frewsxcv:rollup, r=frewsxcvbors-5/+5
Rollup of 7 pull requests - Successful merges: #42169, #42215, #42216, #42224, #42230, #42236, #42241 - Failed merges:
2017-05-26Rollup merge of #42169 - scottmcm:new-step-trait-issue, r=alexcrichtonCorey Farwell-5/+5
Give step_trait a distinct tracking issue from step_by iterator_step_by has decoupled their futures, so the tracking issue should split. Old issue: https://github.com/rust-lang/rust/issues/27741 New issue: https://github.com/rust-lang/rust/issues/42168 r? @alexcrichton (another follow-up to closed PR https://github.com/rust-lang/rust/pull/42110#issuecomment-303176049)
2017-05-26Auto merge of #42014 - tbu-:pr_scan_not_fused, r=alexcrichtonbors-4/+0
Remove `FusedIterator` implementation of `iter::Scan` Fixes #41964. This is a breaking change.
2017-05-25Lower `?` to `Try` instead of `Carrier`Scott McMurray-17/+67
The easy parts of RFC 1859. (Just the trait and the lowering, none of the error message improvements nor the insta-stable impl for Option.)
2017-05-24Rollup merge of #42195 - SamWhited:fix_broken_link, r=steveklabnikMark Simulacrum-1/+1
fix broken link to nomicon in Unsize docs Add a missing link that is currently broken in the docs (see the last sentence of https://doc.rust-lang.org/std/marker/trait.Unsize.html)
2017-05-24Rollup merge of #42159 - Havvy:doc-drop, r=steveklabnikMark Simulacrum-0/+44
Document drop more. Adds two examples to Drop and describes the recursive drop on types that contain fields.
2017-05-24Rollup merge of #42134 - scottmcm:rangeinclusive-struct, r=aturonMark Simulacrum-232/+132
Make RangeInclusive just a two-field struct Not being an enum improves ergonomics and consistency, especially since NonEmpty variant wasn't prevented from being empty. It can still be iterable without an extra "done" bit by making the range have !(start <= end), which is even possible without changing the Step trait. Implements merged https://github.com/rust-lang/rfcs/pull/1980; tracking issue https://github.com/rust-lang/rust/issues/28237. This is definitely a breaking change to anything consuming `RangeInclusive` directly (not as an Iterator) or constructing it without using the sugar. Is there some change that would make sense before this so compilation failures could be compatibly fixed ahead of time? r? @aturon (as FCP proposer on the RFC)
2017-05-24fix broken link to nomicon in Unsize docsSam Whited-1/+1
2017-05-23Add comments to explain helper functionsIrfan Hudda-5/+13
2017-05-23Give step_trait a distinct tracking issue from step_byScott McMurray-5/+5
iterator_step_by has decoupled their futures, so the tracking issue should split.
2017-05-23Update description of iter::StepByScott McMurray-1/+1
2017-05-23Override size_hint and propagate ExactSizeIterator for iter::StepByScott McMurray-0/+94
Generally useful, but also a prerequisite for moving a bunch of unit tests off Range::step_by.
2017-05-22Suggested changes by birkenfeldHavvy-6/+4
2017-05-22Adding links to option::Optionprojektir-26/+60
2017-05-22Fix trailing whitespace.Havvy-2/+2
2017-05-22Add description of how values are dropped to Drop trait.Havvy-1/+7
2017-05-22Add example of variable declaration drop order to Drop trait.Havvy-0/+12
2017-05-22Add example of recursive drop to Drop trait.Havvy-0/+28
2017-05-21Return a correct size_hint for degenerate inclusive rangesScott McMurray-0/+9
Fixes https://github.com/rust-lang/rust/issues/42135 Found while fixing run-pass/range_inclusive test failure.
2017-05-21Stop returning k from [T]::rotateScott McMurray-6/+4
2017-05-21Update slice_rotate to a real tracking numberScott McMurray-1/+1
2017-05-21Remove the optimization in ptr_swap_nScott McMurray-45/+3
It can be revisted later after the mem::swap optimizations land.
2017-05-21Add an in-place rotate method for slices to libcoreScott McMurray-0/+187
A helpful primitive for moving chunks of data around inside a slice. In particular, adding elements to the end of a Vec then moving them somewhere else, as a way to do efficient multiple-insert. (There's drain for efficient block-remove, but no easy way to block-insert.) Talk with another example: <https://youtu.be/qH6sSOr-yk8?t=560>
2017-05-21Make RangeInclusive just a two-field structScott McMurray-233/+124
Not being an enum improves ergonomics, especially since NonEmpty could be Empty. It can still be iterable without an extra "done" bit by making the range have !(start <= end), which is even possible without changing the Step trait. Implements RFC 1980
2017-05-20Rollup merge of #42098 - japaric:gh42097, r=Mark-SimulacrumMark Simulacrum-0/+1
core: fix unused_macro warning when compiling the crate for a target with max-atomic-width = 0 fixes #42097
2017-05-20expose needs_drop under mem::Alexis Beingessner-0/+52
2017-05-20Auto merge of #42111 - ollie27:stab, r=Mark-Simulacrumbors-52/+52
Correct some stability versions These were found by running tidy on stable versions of rust and finding features stabilised with the wrong version numbers.
2017-05-20Correct some stability versionsOliver Middleton-52/+52
These were found by running tidy on stable versions of rust and finding features stabilised with the wrong version numbers.
2017-05-19Auto merge of #42105 - Mark-Simulacrum:rollup, r=Mark-Simulacrumbors-1/+27
Rollup of 17 pull requests - Successful merges: #41870, #41910, #41958, #41971, #42006, #42024, #42037, #42056, #42067, #42070, #42079, #42080, #42082, #42089, #42092, #42096, #42100 - Failed merges:
2017-05-19Rollup merge of #42037 - nagisa:charpat, r=sfacklerMark Simulacrum-1/+27
Minor optimisation of the string operations The interesting benchmarks are <table cellspacing="0" border="0"> <tr> <th height="17" align="right"><b> (&lt;100% → better than original )</b></th> <th align="left" sdnum="2057;0;0.00%">Delta</th> <th align="left">Original ns/i</th> <th align="left">This Patch ns/i</th> </tr> <tr> <td height="17" align="left">str::contains_bang_char::long_lorem_ipsum</td> <td align="right" sdval="0.249775381850854" sdnum="2057;0;0.00%">24.98%</td> <td align="right" sdval="5565" sdnum="2057;">5565</td> <td align="right" sdval="1390" sdnum="2057;">1390</td> </tr> <tr> <td height="17" align="left">str::contains_bang_char::short_ascii</td> <td align="right" sdval="0.277777777777778" sdnum="2057;0;0.00%">27.78%</td> <td align="right" sdval="144" sdnum="2057;">144</td> <td align="right" sdval="40" sdnum="2057;">40</td> </tr> <tr> <td height="17" align="left">str::contains_bang_char::short_mixed</td> <td align="right" sdval="0.333333333333333" sdnum="2057;0;0.00%">33.33%</td> <td align="right" sdval="120" sdnum="2057;">120</td> <td align="right" sdval="40" sdnum="2057;">40</td> </tr> <tr> <td height="17" align="left">str::contains_bang_char::short_pile_of_poo</td> <td align="right" sdval="0.594202898550725" sdnum="2057;0;0.00%">59.42%</td> <td align="right" sdval="69" sdnum="2057;">69</td> <td align="right" sdval="41" sdnum="2057;">41</td> </tr> <tr> <td height="17" align="left">str::ends_with_ascii_char::long_lorem_ipsum</td> <td align="right" sdval="0.452629649990837" sdnum="2057;0;0.00%">45.26%</td> <td align="right" sdval="5457" sdnum="2057;">5457</td> <td align="right" sdval="2470" sdnum="2057;">2470</td> </tr> <tr> <td height="17" align="left">str::ends_with_ascii_char::short_ascii</td> <td align="right" sdval="0.450054684651841" sdnum="2057;0;0.00%">45.01%</td> <td align="right" sdval="5486" sdnum="2057;">5486</td> <td align="right" sdval="2469" sdnum="2057;">2469</td> </tr> <tr> <td height="17" align="left">str::ends_with_ascii_char::short_mixed</td> <td align="right" sdval="0.463132795304475" sdnum="2057;0;0.00%">46.31%</td> <td align="right" sdval="5452" sdnum="2057;">5452</td> <td align="right" sdval="2525" sdnum="2057;">2525</td> </tr> <tr> <td height="17" align="left">str::ends_with_ascii_char::short_pile_of_poo</td> <td align="right" sdval="0.453426419254088" sdnum="2057;0;0.00%">45.34%</td> <td align="right" sdval="5443" sdnum="2057;">5443</td> <td align="right" sdval="2468" sdnum="2057;">2468</td> </tr> <tr> <td height="17" align="left">str::ends_with_unichar::long_lorem_ipsum</td> <td align="right" sdval="0.459385290889133" sdnum="2057;0;0.00%">45.94%</td> <td align="right" sdval="5466" sdnum="2057;">5466</td> <td align="right" sdval="2511" sdnum="2057;">2511</td> </tr> <tr> <td height="17" align="left">str::ends_with_unichar::short_ascii</td> <td align="right" sdval="0.460593841642229" sdnum="2057;0;0.00%">46.06%</td> <td align="right" sdval="5456" sdnum="2057;">5456</td> <td align="right" sdval="2513" sdnum="2057;">2513</td> </tr> <tr> <td height="17" align="left">str::ends_with_unichar::short_mixed</td> <td align="right" sdval="0.454976303317536" sdnum="2057;0;0.00%">45.50%</td> <td align="right" sdval="5486" sdnum="2057;">5486</td> <td align="right" sdval="2496" sdnum="2057;">2496</td> </tr> <tr> <td height="17" align="left">str::ends_with_unichar::short_pile_of_poo</td> <td align="right" sdval="0.456497797356828" sdnum="2057;0;0.00%">45.65%</td> <td align="right" sdval="5448" sdnum="2057;">5448</td> <td align="right" sdval="2487" sdnum="2057;">2487</td> </tr> <tr> <td height="17" align="left">str::find_underscore_char::long_lorem_ipsum</td> <td align="right" sdval="0.622058559367703" sdnum="2057;0;0.00%">62.21%</td> <td align="right" sdval="5567" sdnum="2057;">5567</td> <td align="right" sdval="3463" sdnum="2057;">3463</td> </tr> <tr> <td height="17" align="left">str::find_underscore_char::short_ascii</td> <td align="right" sdval="0.664383561643836" sdnum="2057;0;0.00%">66.44%</td> <td align="right" sdval="146" sdnum="2057;">146</td> <td align="right" sdval="97" sdnum="2057;">97</td> </tr> <tr> <td height="17" align="left">str::find_underscore_char::short_mixed</td> <td align="right" sdval="0.762295081967213" sdnum="2057;0;0.00%">76.23%</td> <td align="right" sdval="122" sdnum="2057;">122</td> <td align="right" sdval="93" sdnum="2057;">93</td> </tr> <tr> <td height="17" align="left">str::find_underscore_str::short_pile_of_poo</td> <td align="right" sdval="0.476190476190476" sdnum="2057;0;0.00%">47.62%</td> <td align="right" sdval="252" sdnum="2057;">252</td> <td align="right" sdval="120" sdnum="2057;">120</td> </tr> <tr> <td height="17" align="left">str::find_zzz_char::long_lorem_ipsum</td> <td align="right" sdval="0.621655593463818" sdnum="2057;0;0.00%">62.17%</td> <td align="right" sdval="5569" sdnum="2057;">5569</td> <td align="right" sdval="3462" sdnum="2057;">3462</td> </tr> <tr> <td height="17" align="left">str::find_zzz_char::short_ascii</td> <td align="right" sdval="0.666666666666667" sdnum="2057;0;0.00%">66.67%</td> <td align="right" sdval="147" sdnum="2057;">147</td> <td align="right" sdval="98" sdnum="2057;">98</td> </tr> <tr> <td height="17" align="left">str::find_zzz_char::short_mixed</td> <td align="right" sdval="0.754098360655738" sdnum="2057;0;0.00%">75.41%</td> <td align="right" sdval="122" sdnum="2057;">122</td> <td align="right" sdval="92" sdnum="2057;">92</td> </tr> <tr> <td height="17" align="left">str::find_zzz_str::long_lorem_ipsum</td> <td align="right" sdval="0.728648648648649" sdnum="2057;0;0.00%">72.86%</td> <td align="right" sdval="925" sdnum="2057;">925</td> <td align="right" sdval="674" sdnum="2057;">674</td> </tr> <tr> <td height="17" align="left">str::rfind_underscore_char::long_lorem_ipsum</td> <td align="right" sdval="0.3418911335578" sdnum="2057;0;0.00%">34.19%</td> <td align="right" sdval="7128" sdnum="2057;">7128</td> <td align="right" sdval="2437" sdnum="2057;">2437</td> </tr> <tr> <td height="17" align="left">str::rfind_underscore_char::short_ascii</td> <td align="right" sdval="0.373056994818653" sdnum="2057;0;0.00%">37.31%</td> <td align="right" sdval="193" sdnum="2057;">193</td> <td align="right" sdval="72" sdnum="2057;">72</td> </tr> <tr> <td height="17" align="left">str::rfind_underscore_char::short_mixed</td> <td align="right" sdval="0.414201183431953" sdnum="2057;0;0.00%">41.42%</td> <td align="right" sdval="169" sdnum="2057;">169</td> <td align="right" sdval="70" sdnum="2057;">70</td> </tr> <tr> <td height="17" align="left">str::rfind_underscore_char::short_pile_of_poo</td> <td align="right" sdval="0.505050505050505" sdnum="2057;0;0.00%">50.51%</td> <td align="right" sdval="99" sdnum="2057;">99</td> <td align="right" sdval="50" sdnum="2057;">50</td> </tr> <tr> <td height="17" align="left">str::rfind_zzz_char::long_lorem_ipsum</td> <td align="right" sdval="0.341983447888904" sdnum="2057;0;0.00%">34.20%</td> <td align="right" sdval="7129" sdnum="2057;">7129</td> <td align="right" sdval="2438" sdnum="2057;">2438</td> </tr> <tr> <td height="17" align="left">str::rfind_zzz_char::short_ascii</td> <td align="right" sdval="0.371134020618557" sdnum="2057;0;0.00%">37.11%</td> <td align="right" sdval="194" sdnum="2057;">194</td> <td align="right" sdval="72" sdnum="2057;">72</td> </tr> <tr> <td height="17" align="left">str::rfind_zzz_char::short_mixed</td> <td align="right" sdval="0.409356725146199" sdnum="2057;0;0.00%">40.94%</td> <td align="right" sdval="171" sdnum="2057;">171</td> <td align="right" sdval="70" sdnum="2057;">70</td> </tr> <tr> <td height="17" align="left">str::rfind_zzz_char::short_pile_of_poo</td> <td align="right" sdval="0.548076923076923" sdnum="2057;0;0.00%">54.81%</td> <td align="right" sdval="104" sdnum="2057;">104</td> <td align="right" sdval="57" sdnum="2057;">57</td> </tr> <tr> <td height="17" align="left">str::trim_right_ascii_char::short_mixed</td> <td align="right" sdval="1.10416666666667" sdnum="2057;0;0.00%">110.42%</td> <td align="right" sdval="48" sdnum="2057;">48</td> <td align="right" sdval="53" sdnum="2057;">53</td> </tr> <tr> <td height="17" align="left">string::bench_from</td> <td align="right" sdval="1.17241379310345" sdnum="2057;0;0.00%">117.24%</td> <td align="right" sdval="58" sdnum="2057;">58</td> <td align="right" sdval="68" sdnum="2057;">68</td> </tr> <tr> <td height="17" align="left">string::bench_from_str</td> <td align="right" sdval="1.17241379310345" sdnum="2057;0;0.00%">117.24%</td> <td align="right" sdval="58" sdnum="2057;">58</td> <td align="right" sdval="68" sdnum="2057;">68</td> </tr> <tr> <td height="17" align="left">string::bench_push_str</td> <td align="right" sdval="1.11111111111111" sdnum="2057;0;0.00%">111.11%</td> <td align="right" sdval="54" sdnum="2057;">54</td> <td align="right" sdval="60" sdnum="2057;">60</td> </tr> <tr> <td height="17" align="left">string::bench_to_string</td> <td align="right" sdval="1.12068965517241" sdnum="2057;0;0.00%">112.07%</td> <td align="right" sdval="58" sdnum="2057;">58</td> <td align="right" sdval="65" sdnum="2057;">65</td> </tr> <tr> <td height="17" align="left">string::from_utf8_lossy_100_invalid</td> <td align="right" sdval="1.1131458469588" sdnum="2057;0;0.00%">111.31%</td> <td align="right" sdval="1529" sdnum="2057;">1529</td> <td align="right" sdval="1702" sdnum="2057;">1702</td> </tr> </table>