[Mesa-dev] Rust drivers in Mesa

Jacob Lifshay programmerjake at gmail.com
Fri Oct 2 18:12:18 UTC 2020


On Fri, Oct 2, 2020, 10:53 Jason Ekstrand <jason at jlekstrand.net> wrote:

>
>  2. Rust's enums look awesome but are only mostly awesome:
>     a. Pattern matching on them can lead to some pretty deep
> indentation which is a bit annoying.
>     b. There's no good way to have multiple cases handled by the same
> code like you can with a C switch; you have to either repeat it or
> break it out into a generic helper.
>

You can use | in match which could help with 2.b:
https://doc.rust-lang.org/reference/expressions/match-expr.html
example:
match make_my_enum() {
    B { strv: s, .. } | C(MyStruct(s)) => println!("B or C: the string is
{}", s),
    A(_) => {}
}
struct MyStruct(String);
enum MyEnum {
    A(String),
    B {
        intv: i32,
        strv: String,
    },
    C(MyStruct),
}

Jacob Lifshay
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20201002/de3b62a4/attachment-0001.htm>


More information about the mesa-dev mailing list