#stack #type-erasure #any #no-std

无std stack-any

一个提供类型擦除的栈上拥有相同大小类型的库

3个版本

0.1.2 2024年6月29日
0.1.1 2024年6月29日
0.1.0 2024年6月27日

301内存管理

每月 31 次下载
用于 ecs-tiny

MIT 许可证

7KB
71

stack-any

crates.io doc.rs

一个提供类型擦除的栈上拥有相同大小类型的库。

使用方法

let mut stacks = [
    stack_any::stack_any!(Vec<i32>, vec![]),
    stack_any::stack_any!(Vec<char>, vec![]),
];

stacks[0].downcast_mut::<Vec<i32>>().unwrap().push(5);
stacks[1].downcast_mut::<Vec<char>>().unwrap().push('x');

assert_eq!(stacks[0].downcast_ref(), Some(&vec![5]));
assert_eq!(stacks[1].downcast_ref(), Some(&vec!['x']));

lib.rs:

stack-any

一个提供类型擦除的栈上拥有相同大小类型的库。

使用方法

let mut stacks = [
    stack_any::stack_any!(Vec<i32>, vec![]),
    stack_any::stack_any!(Vec<char>, vec![]),
];

stacks[0].downcast_mut::<Vec<i32>>().unwrap().push(5);
stacks[1].downcast_mut::<Vec<char>>().unwrap().push('x');

assert_eq!(stacks[0].downcast_ref(), Some(&vec![5]));
assert_eq!(stacks[1].downcast_ref(), Some(&vec!['x']));

无运行时依赖