<div dir="auto"><div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Oct 2, 2020, 10:53 Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
 2. Rust's enums look awesome but are only mostly awesome:<br>
    a. Pattern matching on them can lead to some pretty deep<br>
indentation which is a bit annoying.<br>
    b. There's no good way to have multiple cases handled by the same<br>
code like you can with a C switch; you have to either repeat it or<br>
break it out into a generic helper.<br></blockquote></div></div><div dir="auto"><br></div><div dir="auto">You can use | in match which could help with 2.b:</div><div dir="auto"><a href="https://doc.rust-lang.org/reference/expressions/match-expr.html">https://doc.rust-lang.org/reference/expressions/match-expr.html</a><br></div><div dir="auto">example:</div><div dir="auto">match make_my_enum() {</div><div dir="auto">    B { strv: s, .. } | C(MyStruct(s)) => println!("B or C: the string is {}", s),</div><div dir="auto">    A(_) => {}</div><div dir="auto">}</div><div dir="auto"><div dir="auto">struct MyStruct(String);</div><div dir="auto">enum MyEnum {</div><div dir="auto">    A(String),</div><div dir="auto">    B {</div><div dir="auto">        intv: i32,</div><div dir="auto">        strv: String,</div><div dir="auto">    },</div><div dir="auto">    C(MyStruct),</div><div dir="auto">}</div><div dir="auto"><br style="font-family:sans-serif"></div><div dir="auto">Jacob Lifshay</div></div></div>