rust/src/libcore
bors a7be40c65a Auto merge of #56534 - xfix:copied, r=@SimonSapin
Add unstable Iterator::copied()

Initially suggested at https://github.com/bluss/rust-itertools/pull/289, however the maintainers of itertools suggested this may be better of in a standard library.

The intent of `copied` is to avoid accidentally cloning iterator elements after doing a code refactoring which causes a structure to be no longer `Copy`. This is a relatively common pattern, as it can be seen by calling `rg --pcre2 '[.]map[(][|](?:(\w+)[|] [*]\1|&(\w+)[|] \2)[)]'` on Rust main repository. Additionally, many uses of `cloned` actually want to simply `Copy`, and changing something to be no longer copyable may introduce unnoticeable performance penalty.

Also, this makes sense because the standard library includes `[T].copy_from_slice` to pair with `[T].clone_from_slice`.

This also adds `Option::copied`, because it makes sense to pair it with `Iterator::copied`. I don't think this feature is particularly important, but it makes sense to update `Option` along with `Iterator` for consistency.
2018-12-26 19:39:19 +00:00
..
benches Remove licenses 2018-12-25 21:08:33 -07:00
char Remove licenses 2018-12-25 21:08:33 -07:00
fmt Remove licenses 2018-12-25 21:08:33 -07:00
future Remove licenses 2018-12-25 21:08:33 -07:00
hash Remove licenses 2018-12-25 21:08:33 -07:00
iter Auto merge of #56534 - xfix:copied, r=@SimonSapin 2018-12-26 19:39:19 +00:00
num Remove licenses 2018-12-25 21:08:33 -07:00
ops Remove licenses 2018-12-25 21:08:33 -07:00
prelude Remove licenses 2018-12-25 21:08:33 -07:00
slice Remove licenses 2018-12-25 21:08:33 -07:00
str Remove licenses 2018-12-25 21:08:33 -07:00
sync Remove licenses 2018-12-25 21:08:33 -07:00
task Remove licenses 2018-12-25 21:08:33 -07:00
tests Auto merge of #56534 - xfix:copied, r=@SimonSapin 2018-12-26 19:39:19 +00:00
unicode Remove licenses 2018-12-25 21:08:33 -07:00
alloc.rs Remove licenses 2018-12-25 21:08:33 -07:00
any.rs Remove licenses 2018-12-25 21:08:33 -07:00
array.rs Remove licenses 2018-12-25 21:08:33 -07:00
ascii.rs Remove licenses 2018-12-25 21:08:33 -07:00
borrow.rs Remove licenses 2018-12-25 21:08:33 -07:00
Cargo.toml std: Depend directly on crates.io crates 2018-12-11 21:08:22 -08:00
cell.rs Remove licenses 2018-12-25 21:08:33 -07:00
clone.rs Remove licenses 2018-12-25 21:08:33 -07:00
cmp.rs Remove licenses 2018-12-25 21:08:33 -07:00
convert.rs Remove licenses 2018-12-25 21:08:33 -07:00
default.rs Remove licenses 2018-12-25 21:08:33 -07:00
ffi.rs Bump to 1.33.0 2018-12-12 08:09:26 -08:00
hint.rs Remove licenses 2018-12-25 21:08:33 -07:00
internal_macros.rs Remove licenses 2018-12-25 21:08:33 -07:00
intrinsics.rs Remove licenses 2018-12-25 21:08:33 -07:00
iter_private.rs Remove licenses 2018-12-25 21:08:33 -07:00
lib.rs Remove licenses 2018-12-25 21:08:33 -07:00
macros.rs Remove licenses 2018-12-25 21:08:33 -07:00
marker.rs Remove licenses 2018-12-25 21:08:33 -07:00
mem.rs Remove licenses 2018-12-25 21:08:33 -07:00
nonzero.rs Remove licenses 2018-12-25 21:08:33 -07:00
option.rs Auto merge of #56534 - xfix:copied, r=@SimonSapin 2018-12-26 19:39:19 +00:00
panic.rs Remove licenses 2018-12-25 21:08:33 -07:00
panicking.rs Remove licenses 2018-12-25 21:08:33 -07:00
pin.rs Fix Unpin docs link 2018-12-21 20:42:50 -08:00
ptr.rs Remove licenses 2018-12-25 21:08:33 -07:00
raw.rs Remove licenses 2018-12-25 21:08:33 -07:00
result.rs Remove licenses 2018-12-25 21:08:33 -07:00
time.rs Remove licenses 2018-12-25 21:08:33 -07:00
tuple.rs Remove licenses 2018-12-25 21:08:33 -07:00
unit.rs Remove licenses 2018-12-25 21:08:33 -07:00