#match #any #traits #expressions

match_any_trait

任何特质的匹配表达式

1 个不稳定版本

0.1.1 2023年9月14日
0.1.0 2023年9月14日
0.0.0 2023年9月14日

#700过程宏

Apache-2.0

8KB
119

match_any_trait

提供了一种过程宏,即任何特质的匹配表达式

安装

cargo add match_any_trait

示例

use std::any::Any;
use match_any_trait::match_any_trait;

#[derive(Debug)]
struct MyStruct {
    x: u32,
}

#[derive(Debug)]
struct MyNum {
    y: u32,
}

#[derive(Debug)]
struct MyTuple;

#[derive(Debug)]
struct MyTemplate;

fn main() {
    // let num = MyStruct{
    //     x: 1,
    // };

    // let num = MyNum{
    //     y: 1,
    // };

    // let num = MyTuple;

    let num = MyTemplate;

    let num = &num as &dyn Any;

    match_any_trait! {
        match num {
            MyStruct(s) | MyNum(s) => println!("num is a {:?}", s),
            MyTuple => println!("num is a MyTuple") 
            MyTemplate => println!("num is a MyTemplate"),
            _ => println!("num is unknown"),
        }
    }

}

依赖

~280–730KB
~18K SLoC