Commit graph

6728 commits

Author SHA1 Message Date
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> (&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>
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