lkml.org 
[lkml]   [2022]   [Dec]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 27/28] rust: types: add `Either` type
    Date
    From: Wedson Almeida Filho <wedsonaf@gmail.com>

    Introduce the new `types` module of the `kernel` crate with
    `Either` as its first type.

    `Either<L, R>` is a sum type that always holds either a value
    of type `L` (`Left` variant) or `R` (`Right` variant).

    For instance:

    struct Executor {
    queue: Either<BoxedQueue, &'static Queue>,
    }

    Signed-off-by: Wedson Almeida Filho <wedsonaf@gmail.com>
    Reviewed-by: Wei Liu <wei.liu@kernel.org>
    [Reworded, adapted for upstream and applied latest changes]
    Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
    ---
    rust/kernel/lib.rs | 1 +
    rust/kernel/types.rs | 12 ++++++++++++
    2 files changed, 13 insertions(+)
    create mode 100644 rust/kernel/types.rs

    diff --git a/rust/kernel/lib.rs b/rust/kernel/lib.rs
    index a3abc110ff97..53040fa9e897 100644
    --- a/rust/kernel/lib.rs
    +++ b/rust/kernel/lib.rs
    @@ -31,6 +31,7 @@ mod static_assert;
    #[doc(hidden)]
    pub mod std_vendor;
    pub mod str;
    +pub mod types;

    #[doc(hidden)]
    pub use bindings;
    diff --git a/rust/kernel/types.rs b/rust/kernel/types.rs
    new file mode 100644
    index 000000000000..3b0c44769708
    --- /dev/null
    +++ b/rust/kernel/types.rs
    @@ -0,0 +1,12 @@
    +// SPDX-License-Identifier: GPL-2.0
    +
    +//! Kernel types.
    +
    +/// A sum type that always holds either a value of type `L` or `R`.
    +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),
    +}
    --
    2.38.1
    \
     
     \ /
      Last update: 2022-12-02 17:19    [W:9.130 / U:0.048 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site