File tree 1 file changed +19
-0
lines changed
1 file changed +19
-0
lines changed Original file line number Diff line number Diff line change @@ -43,6 +43,25 @@ impl<T> ArrayLayout<T> {
43
43
/// # Errors
44
44
///
45
45
/// When `len * size_of::<T>()` overflows or when `len * size_of::<T>() > isize::MAX`.
46
+ ///
47
+ /// # Examples
48
+ ///
49
+ /// ```
50
+ /// # use kernel::alloc::layout::{ArrayLayout, LayoutError};
51
+ /// let layout = ArrayLayout::<i32>::new(15)?;
52
+ /// assert_eq!(layout.len(), 15);
53
+ ///
54
+ /// // Errors because `len * size_of::<T>()` overflows.
55
+ /// let layout = ArrayLayout::<i32>::new(isize::MAX as usize);
56
+ /// assert!(layout.is_err());
57
+ ///
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);
61
+ /// assert!(layout.is_err());
62
+ ///
63
+ /// # Ok::<(), Error>(())
64
+ /// ```
46
65
pub const fn new ( len : usize ) -> Result < Self , LayoutError > {
47
66
match len. checked_mul ( core:: mem:: size_of :: < T > ( ) ) {
48
67
Some ( size) if size <= ISIZE_MAX => {
You can’t perform that action at this time.
0 commit comments