]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
rust: types: remove `Either<L, R>`
authorBenno Lossin <lossin@kernel.org>
Mon, 19 May 2025 12:43:02 +0000 (14:43 +0200)
committerMiguel Ojeda <ojeda@kernel.org>
Mon, 21 Jul 2025 21:54:19 +0000 (23:54 +0200)
This enum is not used. Additionally, using it would result in poor
ergonomics, because in order to do any operation on a value it has to be
matched first. Our version of `Either` also doesn't provide any helper
methods making it even more difficult to use.

The alternative of creating a custom enum for the concrete use-case also
is much better for ergonomics. As one can provide functions on the type
directly and users don't need to match the value manually.

Signed-off-by: Benno Lossin <lossin@kernel.org>
Reviewed-by: Danilo Krummrich <dakr@kernel.org>
Link: https://lore.kernel.org/r/20250519124304.79237-1-lossin@kernel.org
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
rust/kernel/types.rs

index 49a0e8e9326b9a80fd4016ceeb1dcfb2e8011b1e..82b9cfeb47396cd242a48d9ad8a619a25b45541e 100644 (file)
@@ -569,24 +569,6 @@ impl<T: AlwaysRefCounted> Drop for ARef<T> {
     }
 }
 
-/// A sum type that always holds either a value of type `L` or `R`.
-///
-/// # Examples
-///
-/// ```
-/// use kernel::types::Either;
-///
-/// let left_value: Either<i32, &str> = Either::Left(7);
-/// let right_value: Either<i32, &str> = Either::Right("right value");
-/// ```
-pub enum Either<L, R> {
-    /// Constructs an instance of [`Either`] containing a value of type `L`.
-    Left(L),
-
-    /// Constructs an instance of [`Either`] containing a value of type `R`.
-    Right(R),
-}
-
 /// Zero-sized type to mark types not [`Send`].
 ///
 /// Add this type as a field to your struct if your type should not be sent to a different task.