#macro #utility #array #define #different #containing #type

anygma

anygma 使定义包含不同类型的数组变得简单

1 个不稳定版本

0.1.0 2024年2月4日

#34#containing

每月21 次下载

MIT/Apache

8KB
113

anygma 🦝

Actions Status Crates.io Documentation

anygma 使定义包含不同类型的数组变得简单。

示例

use anygma::ary_anyref;

let a = ary_anyref![0, 'a', "str"];
assert_eq!(a[0].downcast_ref::<i32>(), Some(&0));
assert_eq!(a[1].downcast_ref::<char>(), Some(&'a'));
assert_eq!(a[2].downcast_ref::<&str>(), Some(&"str"));

贡献

该项目欢迎您的 PR 和问题。例如,修复错误、添加功能、重构等。


lib.rs:

此包使定义包含不同类型的数组变得简单。

示例

use anygma::ary_anyref;

let a = ary_anyref![0, 'a', "str"];
assert_eq!(a[0].downcast_ref::<i32>(), Some(&0));
assert_eq!(a[1].downcast_ref::<char>(), Some(&'a'));
assert_eq!(a[2].downcast_ref::<&str>(), Some(&"str"));
use anygma::ary_tref;

let a = ary_tref![&dyn std::fmt::Debug; 0, 'a', "str"];
println!("{:?}", a);

您还可以使用 [ary_tref!] 创建自己的新宏

macro_rules! ary_debug {
    ( $( $value:expr ),+ $(,)? ) => {
        ary_tref![&dyn std::fmt::Debug; $($value),+]
    };
}

let a = ary_debug![0, 'a', "str"];
println!("{:?}", a);

无运行时依赖项