mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-25 21:34:18 +00:00
Rollup merge of #81742 - sdroege:exact-size-iterator-correctness, r=kennytm
Add a note about the correctness and the effect on unsafe code to the `ExactSizeIterator` docs As it is a safe trait it does not provide any guarantee that the returned length is correct and as such unsafe code must not rely on it. That's why `TrustedLen` exists. Fixes https://github.com/rust-lang/rust/issues/81739
This commit is contained in:
commit
f706216251
@ -13,6 +13,12 @@
|
|||||||
/// implement it. However, you may be able to provide a more performant
|
/// implement it. However, you may be able to provide a more performant
|
||||||
/// implementation than the default, so overriding it in this case makes sense.
|
/// implementation than the default, so overriding it in this case makes sense.
|
||||||
///
|
///
|
||||||
|
/// Note that this trait is a safe trait and as such does *not* and *cannot*
|
||||||
|
/// guarantee that the returned length is correct. This means that `unsafe`
|
||||||
|
/// code **must not** rely on the correctness of [`Iterator::size_hint`]. The
|
||||||
|
/// unstable and unsafe [`TrustedLen`](super::marker::TrustedLen) trait gives
|
||||||
|
/// this additional guarantee.
|
||||||
|
///
|
||||||
/// [`len`]: ExactSizeIterator::len
|
/// [`len`]: ExactSizeIterator::len
|
||||||
///
|
///
|
||||||
/// # Examples
|
/// # Examples
|
||||||
|
Loading…
Reference in New Issue
Block a user