Clar Charr
54bbe23b2e
Clarify docs on implementing Into.
2017-05-28 16:13:56 -04:00
Djzin
b795b7b43b
restore old behaviour
2017-05-28 18:10:12 +01:00
Djzin
8a973dfa24
restore old behaviour for sizes < 128
2017-05-28 15:39:47 +01:00
bors
bcf95067e4
Auto merge of #42167 - scottmcm:iter-stepby-sizehint, r=alexcrichton
...
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-28 14:26:52 +00:00
Mark Simulacrum
423b410fce
Rollup merge of #42260 - stjepang:document-cmp-traits-agreement, r=alexcrichton
...
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-27 20:54:04 -06:00
Djzin
d4d3f53468
better respect alignment for copying tail
2017-05-27 16:39:51 +01:00
Stjepan Glavina
f5421367a2
Docs: impls of PartialEq/PartialOrd/Ord must agree
2017-05-27 17:15:32 +02:00
Djzin
74751358e6
Merge remote-tracking branch 'upstream/master' into fast-swap
2017-05-27 14:31:47 +01:00
Djzin
c6307a2fa5
copy tail bytes better for aligned types
2017-05-27 14:29:41 +01:00
Stjepan Glavina
b559507680
Clarify the docs for align_of and its variants
2017-05-27 00:49:38 +02:00
bors
256e497fe6
Auto merge of #42245 - frewsxcv:rollup, r=frewsxcv
...
Rollup of 7 pull requests
- Successful merges: #42169 , #42215 , #42216 , #42224 , #42230 , #42236 , #42241
- Failed merges:
2017-05-26 15:31:49 +00:00
Corey Farwell
7e47327d90
Rollup merge of #42169 - scottmcm:new-step-trait-issue, r=alexcrichton
...
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-26 10:20:25 -04:00
bors
c732446edd
Auto merge of #42014 - tbu-:pr_scan_not_fused, r=alexcrichton
...
Remove `FusedIterator` implementation of `iter::Scan`
Fixes #41964 .
This is a breaking change.
2017-05-26 12:54:11 +00:00
Scott McMurray
ecde1e1d3b
Lower ? to Try instead of Carrier
...
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-25 00:47:30 -07:00
Mark Simulacrum
a78a0dbe5f
Rollup merge of #42195 - SamWhited:fix_broken_link, r=steveklabnik
...
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-24 19:50:09 -06:00
Mark Simulacrum
ca0860df66
Rollup merge of #42159 - Havvy:doc-drop, r=steveklabnik
...
Document drop more.
Adds two examples to Drop and describes the recursive drop on types that contain fields.
2017-05-24 19:50:06 -06:00
Mark Simulacrum
00c87a6486
Rollup merge of #42134 - scottmcm:rangeinclusive-struct, r=aturon
...
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-24 19:50:01 -06:00
Sam Whited
f6d935b455
fix broken link to nomicon in Unsize docs
2017-05-24 11:55:05 -05:00
Irfan Hudda
93219a2627
Add comments to explain helper functions
2017-05-23 23:04:23 +05:30
Scott McMurray
794e5724a8
Give step_trait a distinct tracking issue from step_by
...
iterator_step_by has decoupled their futures, so the tracking issue should split.
2017-05-23 03:08:18 -07:00
Scott McMurray
fcb3a7109c
Update description of iter::StepBy
2017-05-23 02:25:08 -07:00
Scott McMurray
57f260d418
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.
2017-05-23 02:24:25 -07:00
Havvy
b41b2947d5
Suggested changes by birkenfeld
2017-05-22 23:49:35 -07:00
projektir
6e27bd8c01
Adding links to option::Option
2017-05-22 21:59:42 -04:00
Havvy
5f4b0ffe59
Fix trailing whitespace.
2017-05-22 16:33:55 -07:00
Havvy
d7927ffb8f
Add description of how values are dropped to Drop trait.
2017-05-22 15:59:00 -07:00
Havvy
ca909c836f
Add example of variable declaration drop order to Drop trait.
2017-05-22 15:15:04 -07:00
Havvy
14b767d07e
Add example of recursive drop to Drop trait.
2017-05-22 15:06:25 -07:00
Scott McMurray
7eaca60f3b
Return a correct size_hint for degenerate inclusive ranges
...
Fixes https://github.com/rust-lang/rust/issues/42135
Found while fixing run-pass/range_inclusive test failure.
2017-05-21 05:03:49 -07:00
Scott McMurray
094d61f079
Stop returning k from [T]::rotate
2017-05-21 03:05:19 -07:00
Scott McMurray
a92ad5e52a
Update slice_rotate to a real tracking number
2017-05-21 01:55:43 -07:00
Scott McMurray
59a6fe6e87
Remove the optimization in ptr_swap_n
...
It can be revisted later after the mem::swap optimizations land.
2017-05-21 01:55:43 -07:00
Scott McMurray
c05676b97f
Add an in-place rotate method for slices to libcore
...
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-21 01:55:43 -07:00
Scott McMurray
f166bd9857
Make RangeInclusive just a two-field struct
...
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-21 01:48:03 -07:00
Mark Simulacrum
950e4266e6
Rollup merge of #42098 - japaric:gh42097, r=Mark-Simulacrum
...
core: fix unused_macro warning
when compiling the crate for a target with max-atomic-width = 0
fixes #42097
2017-05-20 17:48:15 -06:00
Alexis Beingessner
892df1db60
expose needs_drop under mem::
2017-05-20 19:26:34 -04:00
bors
272e77f035
Auto merge of #42111 - ollie27:stab, r=Mark-Simulacrum
...
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-20 15:42:43 +00:00
Oliver Middleton
2f703e4304
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-20 08:38:39 +01:00
bors
5dfcd85fd4
Auto merge of #42105 - Mark-Simulacrum:rollup, r=Mark-Simulacrum
...
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-19 20:41:18 +00:00
Mark Simulacrum
db01c945fc
Rollup merge of #42037 - nagisa:charpat, r=sfackler
...
Minor optimisation of the string operations
The interesting benchmarks are
<table cellspacing="0" border="0">
<tr>
<th height="17" align="right"><b> (<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>
2017-05-19 14:16:17 -06:00
bors
543691d0eb
Auto merge of #41439 - ivandardi:master, r=BurntSushi
...
Stabilize step_by by adding it to Iterator (issue #27741 )
Inspired by itertools' `take()` method. See issue #27741
2017-05-19 17:42:28 +00:00
Simonas Kazlauskas
41debc365e
Try to optimise char patterns
2017-05-19 10:14:13 +03:00
Jorge Aparicio
e4f9db7b8f
core: fix unused_macro warning
...
when compiling the crate for a target with max-atomic-width = 0
fixes #42097
2017-05-18 23:33:08 -05:00
bors
86319e473e
Auto merge of #41907 - est31:macro_unused, r=jseyfried
...
Add lint for unused macros
Addresses parts of #34938 , to add a lint for unused macros.
We now output warnings by default when we encounter a macro that we didn't use for expansion.
Issues to be resolved before this PR is ready for merge:
- [x] fix the NodeId issue described above
- [x] remove all unused macros from rustc and the libraries or set `#[allow(unused_macros)]` next to them if they should be kept for some reason. This is needed for successful boostrap and bors to accept the PR. -> #41934
- [x] ~~implement the full extent of #34938 , that means the macro match arm checking as well.~~ *let's not do this for now*
2017-05-16 23:27:36 +00:00
Ivan Dardi
c5a35f4a8d
Update documentation
2017-05-15 16:59:43 -03:00
Tobias Bucher
a7d91ef2fe
Remove FusedIterator implementation of iter::Scan
...
Fixes #41964 .
This is a breaking change.
2017-05-15 16:21:02 +02:00
bors
ac254fbe79
Auto merge of #41859 - froydnj:align-float-parts, r=sfackler
...
fix confusion about parts required for float formatting
The documentation for flt2dec doesn't match up with the actual
implementation, so fix the documentation to align with reality.
Presumably due to the mismatch, the formatting code for floats in
std::fmt can use correspondingly shorter arrays in some places, so fix
those places up as well.
Fixes #41304 .
2017-05-15 08:42:10 +00:00
Mark Simulacrum
c75ccd7b4e
Rollup merge of #41612 - mandeep:add-ops-generics, r=GuillaumeGomez,frewsxcv
...
Added generic example of std::ops::Add in doc comments
We discussed on IRC how the std::ops examples were potentially missing examples using generics. This PR adds an example to std::ops::Add that shows the use of a generic type T. I'm not sure this is ready for merge as I think the two examples now make the documentation a bit verbose, but I think it's a good starting point. I'd love to hear others thoughts on this. This is in relation to the last item in issue #29365 .
2017-05-13 20:55:08 -06:00
est31
ba0601d4b6
libcore: #[allow] some unused macros
2017-05-13 16:02:29 +02:00
bors
77f1bec6f5
Auto merge of #41920 - arielb1:inline-drop, r=eddyb
...
remove the #[inline] attribute from drop_in_place
Apparently LLVM has exponential code growth while inlining landing pads
if that attribute is present.
Fixes #41696 .
beta-nominating because regression.
r? @eddyb
2017-05-13 13:59:19 +00:00