2个不稳定版本
0.6.4 | 2024年2月17日 |
---|---|
0.5.4 | 2024年2月15日 |
0.4.3 |
|
0.3.3 |
|
0.1.0 |
|
#898 in 数据结构
157 每月下载量
用于 retaker
12KB
288 行
AnyList
AnyList类似于Vec,但类型中不使用泛型。
没有泛型类型,你可以创建包含不同类型的列表。
这唯一的问题是每个函数都需要正确使用类型,因为它们都需要泛型,除了那些不需要泛型参数的实现(例如:remove,pop)。
如果使用错误类型,API将引发panic。
这样做的唯一目的是比Vec
由reddit上的SkiFire13实现。
示例
fn main() {
let mut list = AnyList::new::<u32>();
list.push::<u32>(1);
list.insert::<u32>(1, 2);
list.push::<u32>(3);
assert_eq!(list.as_slice::<u32>(), &[1,2,3]);
list.untyped_remove(0);
assert_eq!(list.as_slice::<u32>(), &[2,3]);
list.untyped_pop();
assert_eq!(list.as_slice::<u32>(), &[2]);
list.insert::<u32>(0, 1);
for i in 0..list.len() {
println!("{:?}", list.get::<u32>(i).unwrap())
}
assert_eq!(list.as_slice::<u32>(), &[1,2]);
}