Improve internal field comments on slice::Iter(Mut)
I wrote these in a previous PR that I ended up withdrawing, so might as well submit them separately.
This commit is contained in:
parent
43a78029b4
commit
57aac3f671
@ -60,10 +60,17 @@ impl<'a, T> IntoIterator for &'a mut [T] {
|
|||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
#[must_use = "iterators are lazy and do nothing unless consumed"]
|
#[must_use = "iterators are lazy and do nothing unless consumed"]
|
||||||
pub struct Iter<'a, T: 'a> {
|
pub struct Iter<'a, T: 'a> {
|
||||||
|
/// The pointer to the next element to return, or the past-the-end location
|
||||||
|
/// if the iterator is empty.
|
||||||
|
///
|
||||||
|
/// This address will be used for all ZST elements, never changed.
|
||||||
ptr: NonNull<T>,
|
ptr: NonNull<T>,
|
||||||
end: *const T, // If T is a ZST, this is actually ptr+len. This encoding is picked so that
|
/// For non-ZSTs, the non-null pointer to the past-the-end element.
|
||||||
// ptr == end is a quick test for the Iterator being empty, that works
|
///
|
||||||
// for both ZST and non-ZST.
|
/// For ZSTs, this is `ptr.wrapping_byte_add(len)`.
|
||||||
|
///
|
||||||
|
/// For all types, `ptr == end` tests whether the iterator is empty.
|
||||||
|
end: *const T,
|
||||||
_marker: PhantomData<&'a T>,
|
_marker: PhantomData<&'a T>,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -179,10 +186,17 @@ impl<T> AsRef<[T]> for Iter<'_, T> {
|
|||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
#[must_use = "iterators are lazy and do nothing unless consumed"]
|
#[must_use = "iterators are lazy and do nothing unless consumed"]
|
||||||
pub struct IterMut<'a, T: 'a> {
|
pub struct IterMut<'a, T: 'a> {
|
||||||
|
/// The pointer to the next element to return, or the past-the-end location
|
||||||
|
/// if the iterator is empty.
|
||||||
|
///
|
||||||
|
/// This address will be used for all ZST elements, never changed.
|
||||||
ptr: NonNull<T>,
|
ptr: NonNull<T>,
|
||||||
end: *mut T, // If T is a ZST, this is actually ptr+len. This encoding is picked so that
|
/// For non-ZSTs, the non-null pointer to the past-the-end element.
|
||||||
// ptr == end is a quick test for the Iterator being empty, that works
|
///
|
||||||
// for both ZST and non-ZST.
|
/// For ZSTs, this is `ptr.wrapping_byte_add(len)`.
|
||||||
|
///
|
||||||
|
/// For all types, `ptr == end` tests whether the iterator is empty.
|
||||||
|
end: *mut T,
|
||||||
_marker: PhantomData<&'a mut T>,
|
_marker: PhantomData<&'a mut T>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user