Lines Matching +full:max +full:- +full:len

1 // SPDX-License-Identifier: GPL-2.0
16 /// - `len * size_of::<T>() <= isize::MAX`.
18 len: usize, field
19 _phantom: PhantomData<fn() -> T>,
23 fn clone(&self) -> Self { in clone()
29 const ISIZE_MAX: usize = isize::MAX as usize;
33 pub const fn empty() -> Self { in empty()
34 // INVARIANT: `0 * size_of::<T>() <= isize::MAX`. in empty()
36 len: 0, in empty()
41 /// Creates a new layout for `[T; len]`.
45 /// When `len * size_of::<T>()` overflows or when `len * size_of::<T>() > isize::MAX`.
52 /// assert_eq!(layout.len(), 15);
54 /// // Errors because `len * size_of::<T>()` overflows.
55 /// let layout = ArrayLayout::<i32>::new(isize::MAX as usize);
58 /// // Errors because `len * size_of::<i32>() > isize::MAX`,
59 /// // even though `len < isize::MAX`.
60 /// let layout = ArrayLayout::<i32>::new(isize::MAX as usize / 2);
65 pub const fn new(len: usize) -> Result<Self, LayoutError> { in new()
66 match len.checked_mul(core::mem::size_of::<T>()) { in new()
68 // INVARIANT: We checked above that `len * size_of::<T>() <= isize::MAX`. in new()
70 len, in new()
78 /// Creates a new layout for `[T; len]`.
82 /// `len` must be a value, for which `len * size_of::<T>() <= isize::MAX` is true.
83 pub unsafe fn new_unchecked(len: usize) -> Self { in new_unchecked()
85 // `len * size_of::<T>() <= isize::MAX`. in new_unchecked()
87 len, in new_unchecked()
93 pub const fn len(&self) -> usize { in len() method
94 self.len in len()
98 pub const fn is_empty(&self) -> bool { in is_empty()
99 self.len == 0 in is_empty()
104 fn from(value: ArrayLayout<T>) -> Self { in from()
105 let res = Layout::array::<T>(value.len); in from()
107 // `len * size_of::<T>() <= isize::MAX` and thus the result must be `Ok`. in from()