Skip to content

Commit ffa6841

Browse files
committed
Auto merge of rust-lang#120486 - reitermarkus:use-generic-nonzero, r=dtolnay
Use generic `NonZero` internally. Tracking issue: rust-lang#120257
2 parents e2872ee + 6a00d4e commit ffa6841

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

92 files changed

+495
-502
lines changed

alloc/src/collections/binary_heap/mod.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ use core::alloc::Allocator;
147147
use core::fmt;
148148
use core::iter::{FusedIterator, InPlaceIterable, SourceIter, TrustedFused, TrustedLen};
149149
use core::mem::{self, swap, ManuallyDrop};
150-
use core::num::NonZeroUsize;
150+
use core::num::NonZero;
151151
use core::ops::{Deref, DerefMut};
152152
use core::ptr;
153153

@@ -296,7 +296,7 @@ pub struct PeekMut<
296296
heap: &'a mut BinaryHeap<T, A>,
297297
// If a set_len + sift_down are required, this is Some. If a &mut T has not
298298
// yet been exposed to peek_mut()'s caller, it's None.
299-
original_len: Option<NonZeroUsize>,
299+
original_len: Option<NonZero<usize>>,
300300
}
301301

302302
#[stable(feature = "collection_debug", since = "1.17.0")]
@@ -350,7 +350,7 @@ impl<T: Ord, A: Allocator> DerefMut for PeekMut<'_, T, A> {
350350
// the standard library as "leak amplification".
351351
unsafe {
352352
// SAFETY: len > 1 so len != 0.
353-
self.original_len = Some(NonZeroUsize::new_unchecked(len));
353+
self.original_len = Some(NonZero::new_unchecked(len));
354354
// SAFETY: len > 1 so all this does for now is leak elements,
355355
// which is safe.
356356
self.heap.data.set_len(1);
@@ -1576,8 +1576,8 @@ unsafe impl<T, A: Allocator> SourceIter for IntoIter<T, A> {
15761576
#[unstable(issue = "none", feature = "inplace_iteration")]
15771577
#[doc(hidden)]
15781578
unsafe impl<I, A: Allocator> InPlaceIterable for IntoIter<I, A> {
1579-
const EXPAND_BY: Option<NonZeroUsize> = NonZeroUsize::new(1);
1580-
const MERGE_BY: Option<NonZeroUsize> = NonZeroUsize::new(1);
1579+
const EXPAND_BY: Option<NonZero<usize>> = NonZero::new(1);
1580+
const MERGE_BY: Option<NonZero<usize>> = NonZero::new(1);
15811581
}
15821582

15831583
unsafe impl<I> AsVecIntoIter for IntoIter<I> {

alloc/src/collections/vec_deque/into_iter.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use core::iter::{FusedIterator, TrustedLen};
2-
use core::num::NonZeroUsize;
2+
use core::num::NonZero;
33
use core::{array, fmt, mem::MaybeUninit, ops::Try, ptr};
44

55
use crate::alloc::{Allocator, Global};
@@ -54,7 +54,7 @@ impl<T, A: Allocator> Iterator for IntoIter<T, A> {
5454
}
5555

5656
#[inline]
57-
fn advance_by(&mut self, n: usize) -> Result<(), NonZeroUsize> {
57+
fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>> {
5858
let len = self.inner.len;
5959
let rem = if len < n {
6060
self.inner.clear();
@@ -63,7 +63,7 @@ impl<T, A: Allocator> Iterator for IntoIter<T, A> {
6363
self.inner.drain(..n);
6464
0
6565
};
66-
NonZeroUsize::new(rem).map_or(Ok(()), Err)
66+
NonZero::new(rem).map_or(Ok(()), Err)
6767
}
6868

6969
#[inline]
@@ -183,7 +183,7 @@ impl<T, A: Allocator> DoubleEndedIterator for IntoIter<T, A> {
183183
}
184184

185185
#[inline]
186-
fn advance_back_by(&mut self, n: usize) -> Result<(), NonZeroUsize> {
186+
fn advance_back_by(&mut self, n: usize) -> Result<(), NonZero<usize>> {
187187
let len = self.inner.len;
188188
let rem = if len < n {
189189
self.inner.clear();
@@ -192,7 +192,7 @@ impl<T, A: Allocator> DoubleEndedIterator for IntoIter<T, A> {
192192
self.inner.truncate(len - n);
193193
0
194194
};
195-
NonZeroUsize::new(rem).map_or(Ok(()), Err)
195+
NonZero::new(rem).map_or(Ok(()), Err)
196196
}
197197

198198
fn try_rfold<B, F, R>(&mut self, mut init: B, mut f: F) -> R

alloc/src/collections/vec_deque/iter.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use core::iter::{FusedIterator, TrustedLen, TrustedRandomAccess, TrustedRandomAccessNoCoerce};
2-
use core::num::NonZeroUsize;
2+
use core::num::NonZero;
33
use core::ops::Try;
44
use core::{fmt, mem, slice};
55

@@ -56,7 +56,7 @@ impl<'a, T> Iterator for Iter<'a, T> {
5656
}
5757
}
5858

59-
fn advance_by(&mut self, n: usize) -> Result<(), NonZeroUsize> {
59+
fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>> {
6060
let remaining = self.i1.advance_by(n);
6161
match remaining {
6262
Ok(()) => return Ok(()),
@@ -128,7 +128,7 @@ impl<'a, T> DoubleEndedIterator for Iter<'a, T> {
128128
}
129129
}
130130

131-
fn advance_back_by(&mut self, n: usize) -> Result<(), NonZeroUsize> {
131+
fn advance_back_by(&mut self, n: usize) -> Result<(), NonZero<usize>> {
132132
match self.i2.advance_back_by(n) {
133133
Ok(()) => return Ok(()),
134134
Err(n) => {

alloc/src/collections/vec_deque/iter_mut.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use core::iter::{FusedIterator, TrustedLen, TrustedRandomAccess, TrustedRandomAccessNoCoerce};
2-
use core::num::NonZeroUsize;
2+
use core::num::NonZero;
33
use core::ops::Try;
44
use core::{fmt, mem, slice};
55

@@ -48,7 +48,7 @@ impl<'a, T> Iterator for IterMut<'a, T> {
4848
}
4949
}
5050

51-
fn advance_by(&mut self, n: usize) -> Result<(), NonZeroUsize> {
51+
fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>> {
5252
match self.i1.advance_by(n) {
5353
Ok(()) => return Ok(()),
5454
Err(remaining) => {
@@ -119,7 +119,7 @@ impl<'a, T> DoubleEndedIterator for IterMut<'a, T> {
119119
}
120120
}
121121

122-
fn advance_back_by(&mut self, n: usize) -> Result<(), NonZeroUsize> {
122+
fn advance_back_by(&mut self, n: usize) -> Result<(), NonZero<usize>> {
123123
match self.i2.advance_back_by(n) {
124124
Ok(()) => return Ok(()),
125125
Err(remaining) => {

alloc/src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@
128128
#![feature(extend_one)]
129129
#![feature(fmt_internals)]
130130
#![feature(fn_traits)]
131+
#![feature(generic_nonzero)]
131132
#![feature(hasher_prefixfree_extras)]
132133
#![feature(hint_assert_unchecked)]
133134
#![feature(inline_const)]

alloc/src/vec/in_place_collect.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -160,14 +160,14 @@ use core::alloc::Layout;
160160
use core::iter::{InPlaceIterable, SourceIter, TrustedRandomAccessNoCoerce};
161161
use core::marker::PhantomData;
162162
use core::mem::{self, ManuallyDrop, SizedTypeProperties};
163-
use core::num::NonZeroUsize;
163+
use core::num::NonZero;
164164
use core::ptr::{self, NonNull};
165165

166166
use super::{InPlaceDrop, InPlaceDstDataSrcBufDrop, SpecFromIter, SpecFromIterNested, Vec};
167167

168168
const fn in_place_collectible<DEST, SRC>(
169-
step_merge: Option<NonZeroUsize>,
170-
step_expand: Option<NonZeroUsize>,
169+
step_merge: Option<NonZero<usize>>,
170+
step_expand: Option<NonZero<usize>>,
171171
) -> bool {
172172
// Require matching alignments because an alignment-changing realloc is inefficient on many
173173
// system allocators and better implementations would require the unstable Allocator trait.

alloc/src/vec/into_iter.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use core::iter::{
1212
};
1313
use core::marker::PhantomData;
1414
use core::mem::{self, ManuallyDrop, MaybeUninit, SizedTypeProperties};
15-
use core::num::NonZeroUsize;
15+
use core::num::NonZero;
1616
#[cfg(not(no_global_oom_handling))]
1717
use core::ops::Deref;
1818
use core::ptr::{self, NonNull};
@@ -234,7 +234,7 @@ impl<T, A: Allocator> Iterator for IntoIter<T, A> {
234234
}
235235

236236
#[inline]
237-
fn advance_by(&mut self, n: usize) -> Result<(), NonZeroUsize> {
237+
fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>> {
238238
let step_size = self.len().min(n);
239239
let to_drop = ptr::slice_from_raw_parts_mut(self.ptr.as_ptr(), step_size);
240240
if T::IS_ZST {
@@ -248,7 +248,7 @@ impl<T, A: Allocator> Iterator for IntoIter<T, A> {
248248
unsafe {
249249
ptr::drop_in_place(to_drop);
250250
}
251-
NonZeroUsize::new(n - step_size).map_or(Ok(()), Err)
251+
NonZero::new(n - step_size).map_or(Ok(()), Err)
252252
}
253253

254254
#[inline]
@@ -336,7 +336,7 @@ impl<T, A: Allocator> DoubleEndedIterator for IntoIter<T, A> {
336336
}
337337

338338
#[inline]
339-
fn advance_back_by(&mut self, n: usize) -> Result<(), NonZeroUsize> {
339+
fn advance_back_by(&mut self, n: usize) -> Result<(), NonZero<usize>> {
340340
let step_size = self.len().min(n);
341341
if T::IS_ZST {
342342
// SAFETY: same as for advance_by()
@@ -350,7 +350,7 @@ impl<T, A: Allocator> DoubleEndedIterator for IntoIter<T, A> {
350350
unsafe {
351351
ptr::drop_in_place(to_drop);
352352
}
353-
NonZeroUsize::new(n - step_size).map_or(Ok(()), Err)
353+
NonZero::new(n - step_size).map_or(Ok(()), Err)
354354
}
355355
}
356356

@@ -457,8 +457,8 @@ unsafe impl<#[may_dangle] T, A: Allocator> Drop for IntoIter<T, A> {
457457
#[unstable(issue = "none", feature = "inplace_iteration")]
458458
#[doc(hidden)]
459459
unsafe impl<T, A: Allocator> InPlaceIterable for IntoIter<T, A> {
460-
const EXPAND_BY: Option<NonZeroUsize> = NonZeroUsize::new(1);
461-
const MERGE_BY: Option<NonZeroUsize> = NonZeroUsize::new(1);
460+
const EXPAND_BY: Option<NonZero<usize>> = NonZero::new(1);
461+
const MERGE_BY: Option<NonZero<usize>> = NonZero::new(1);
462462
}
463463

464464
#[unstable(issue = "none", feature = "inplace_iteration")]

alloc/tests/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#![feature(core_intrinsics)]
1414
#![feature(extract_if)]
1515
#![feature(exact_size_is_empty)]
16+
#![feature(generic_nonzero)]
1617
#![feature(linked_list_cursors)]
1718
#![feature(map_try_insert)]
1819
#![feature(new_uninit)]

alloc/tests/vec.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use core::alloc::{Allocator, Layout};
2-
use core::num::NonZeroUsize;
2+
use core::num::NonZero;
33
use core::ptr::NonNull;
44
use core::{assert_eq, assert_ne};
55
use std::alloc::System;
@@ -1089,9 +1089,9 @@ fn test_into_iter_advance_by() {
10891089
assert_eq!(i.advance_back_by(1), Ok(()));
10901090
assert_eq!(i.as_slice(), [2, 3, 4]);
10911091

1092-
assert_eq!(i.advance_back_by(usize::MAX), Err(NonZeroUsize::new(usize::MAX - 3).unwrap()));
1092+
assert_eq!(i.advance_back_by(usize::MAX), Err(NonZero::new(usize::MAX - 3).unwrap()));
10931093

1094-
assert_eq!(i.advance_by(usize::MAX), Err(NonZeroUsize::new(usize::MAX).unwrap()));
1094+
assert_eq!(i.advance_by(usize::MAX), Err(NonZero::new(usize::MAX).unwrap()));
10951095

10961096
assert_eq!(i.advance_by(0), Ok(()));
10971097
assert_eq!(i.advance_back_by(0), Ok(()));
@@ -1192,7 +1192,7 @@ fn test_from_iter_specialization_with_iterator_adapters() {
11921192
.map(|(a, b)| a + b)
11931193
.map_while(Option::Some)
11941194
.skip(1)
1195-
.map(|e| if e != usize::MAX { Ok(std::num::NonZeroUsize::new(e)) } else { Err(()) });
1195+
.map(|e| if e != usize::MAX { Ok(NonZero::new(e)) } else { Err(()) });
11961196
assert_in_place_trait(&iter);
11971197
let sink = iter.collect::<Result<Vec<_>, _>>().unwrap();
11981198
let sinkptr = sink.as_ptr();

alloc/tests/vec_deque.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use core::num::NonZeroUsize;
1+
use core::num::NonZero;
22
use std::assert_matches::assert_matches;
33
use std::collections::TryReserveErrorKind::*;
44
use std::collections::{vec_deque::Drain, VecDeque};
@@ -445,9 +445,9 @@ fn test_into_iter() {
445445
assert_eq!(it.next_back(), Some(3));
446446

447447
let mut it = VecDeque::from(vec![1, 2, 3, 4, 5]).into_iter();
448-
assert_eq!(it.advance_by(10), Err(NonZeroUsize::new(5).unwrap()));
448+
assert_eq!(it.advance_by(10), Err(NonZero::new(5).unwrap()));
449449
let mut it = VecDeque::from(vec![1, 2, 3, 4, 5]).into_iter();
450-
assert_eq!(it.advance_back_by(10), Err(NonZeroUsize::new(5).unwrap()));
450+
assert_eq!(it.advance_back_by(10), Err(NonZero::new(5).unwrap()));
451451
}
452452
}
453453

0 commit comments

Comments
 (0)