Skip to content

Commit 4be0afe

Browse files
albus-droidintel-lab-lkp
authored andcommitted
rust/list: replace unwrap() with ? in doctest examples
Using `unwrap()` in kernel doctests can cause panics on error and may give newcomers the mistaken impression that panicking is acceptable in kernel code. Replace all `.unwrap()` calls in `kernel::list` examples with `.ok_or(EINVAL)?` so that errors are properly propagated. Closes: Rust-for-Linux#1164 Suggested-by: Miguel Ojeda <[email protected]> Reviewed-by: Benno Lossin <[email protected]> Link: Rust-for-Linux#1164 Signed-off-by: Albin Babu Varghese <[email protected]>
1 parent a3b2347 commit 4be0afe

File tree

1 file changed

+19
-19
lines changed

1 file changed

+19
-19
lines changed

rust/kernel/list.rs

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -82,9 +82,9 @@ pub use self::arc_field::{define_list_arc_field_getter, ListArcField};
8282
/// // [15, 10, 30]
8383
/// {
8484
/// let mut iter = list.iter();
85-
/// assert_eq!(iter.next().unwrap().value, 15);
86-
/// assert_eq!(iter.next().unwrap().value, 10);
87-
/// assert_eq!(iter.next().unwrap().value, 30);
85+
/// assert_eq!(iter.next().ok_or(EINVAL)?.value, 15);
86+
/// assert_eq!(iter.next().ok_or(EINVAL)?.value, 10);
87+
/// assert_eq!(iter.next().ok_or(EINVAL)?.value, 30);
8888
/// assert!(iter.next().is_none());
8989
///
9090
/// // Verify the length of the list.
@@ -93,9 +93,9 @@ pub use self::arc_field::{define_list_arc_field_getter, ListArcField};
9393
///
9494
/// // Pop the items from the list using `pop_back()` and verify the content.
9595
/// {
96-
/// assert_eq!(list.pop_back().unwrap().value, 30);
97-
/// assert_eq!(list.pop_back().unwrap().value, 10);
98-
/// assert_eq!(list.pop_back().unwrap().value, 15);
96+
/// assert_eq!(list.pop_back().ok_or(EINVAL)?.value, 30);
97+
/// assert_eq!(list.pop_back().ok_or(EINVAL)?.value, 10);
98+
/// assert_eq!(list.pop_back().ok_or(EINVAL)?.value, 15);
9999
/// }
100100
///
101101
/// // Insert 3 elements using `push_front()`.
@@ -107,9 +107,9 @@ pub use self::arc_field::{define_list_arc_field_getter, ListArcField};
107107
/// // [30, 10, 15]
108108
/// {
109109
/// let mut iter = list.iter();
110-
/// assert_eq!(iter.next().unwrap().value, 30);
111-
/// assert_eq!(iter.next().unwrap().value, 10);
112-
/// assert_eq!(iter.next().unwrap().value, 15);
110+
/// assert_eq!(iter.next().ok_or(EINVAL)?.value, 30);
111+
/// assert_eq!(iter.next().ok_or(EINVAL)?.value, 10);
112+
/// assert_eq!(iter.next().ok_or(EINVAL)?.value, 15);
113113
/// assert!(iter.next().is_none());
114114
///
115115
/// // Verify the length of the list.
@@ -118,8 +118,8 @@ pub use self::arc_field::{define_list_arc_field_getter, ListArcField};
118118
///
119119
/// // Pop the items from the list using `pop_front()` and verify the content.
120120
/// {
121-
/// assert_eq!(list.pop_front().unwrap().value, 30);
122-
/// assert_eq!(list.pop_front().unwrap().value, 10);
121+
/// assert_eq!(list.pop_front().ok_or(EINVAL)?.value, 30);
122+
/// assert_eq!(list.pop_front().ok_or(EINVAL)?.value, 10);
123123
/// }
124124
///
125125
/// // Push `list2` to `list` through `push_all_back()`.
@@ -135,9 +135,9 @@ pub use self::arc_field::{define_list_arc_field_getter, ListArcField};
135135
/// // list: [15, 25, 35]
136136
/// // list2: []
137137
/// let mut iter = list.iter();
138-
/// assert_eq!(iter.next().unwrap().value, 15);
139-
/// assert_eq!(iter.next().unwrap().value, 25);
140-
/// assert_eq!(iter.next().unwrap().value, 35);
138+
/// assert_eq!(iter.next().ok_or(EINVAL)?.value, 15);
139+
/// assert_eq!(iter.next().ok_or(EINVAL)?.value, 25);
140+
/// assert_eq!(iter.next().ok_or(EINVAL)?.value, 35);
141141
/// assert!(iter.next().is_none());
142142
/// assert!(list2.is_empty());
143143
/// }
@@ -809,11 +809,11 @@ impl<'a, T: ?Sized + ListItem<ID>, const ID: u64> Iterator for Iter<'a, T, ID> {
809809
/// merge_sorted(&mut list, list2);
810810
///
811811
/// let mut items = list.into_iter();
812-
/// assert_eq!(items.next().unwrap().value, 10);
813-
/// assert_eq!(items.next().unwrap().value, 11);
814-
/// assert_eq!(items.next().unwrap().value, 12);
815-
/// assert_eq!(items.next().unwrap().value, 13);
816-
/// assert_eq!(items.next().unwrap().value, 14);
812+
/// assert_eq!(items.next().ok_or(EINVAL)?.value, 10);
813+
/// assert_eq!(items.next().ok_or(EINVAL)?.value, 11);
814+
/// assert_eq!(items.next().ok_or(EINVAL)?.value, 12);
815+
/// assert_eq!(items.next().ok_or(EINVAL)?.value, 13);
816+
/// assert_eq!(items.next().ok_or(EINVAL)?.value, 14);
817817
/// assert!(items.next().is_none());
818818
/// # Result::<(), Error>::Ok(())
819819
/// ```

0 commit comments

Comments
 (0)