mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-17 01:13:11 +00:00
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:
parent
e708cbd91c
commit
f436630ac8
@ -13,6 +13,12 @@
|
||||
/// implement it. However, you may be able to provide a more performant
|
||||
/// 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
|
||||
///
|
||||
/// # Examples
|
||||
|
Loading…
Reference in New Issue
Block a user