#array #ops #type #index #ready #default #self

array-ops

数组数据类型的自动方法实现

1个不稳定版本

0.1.0 2020年3月19日

#18 in #ready

Download history 1/week @ 2023-12-04 5/week @ 2023-12-11 14/week @ 2023-12-18 4/week @ 2023-12-25 1/week @ 2024-01-01 6/week @ 2024-01-08 141/week @ 2024-01-15 7/week @ 2024-01-22 4/week @ 2024-01-29 5/week @ 2024-02-05 26/week @ 2024-02-12 55/week @ 2024-02-19 43/week @ 2024-02-26 34/week @ 2024-03-04 49/week @ 2024-03-11 41/week @ 2024-03-18

172 每月下载量
3 crates 中使用

MPL-2.0+

23KB
425

array-ops

为数组数据类型提供现成的默认方法实现。

概述

此crate提供了一系列特质,为标准库中的大多数数组类型数据结构的函数提供了默认实现。要将其应用于您自己的数组类型数据结构,您只需要实现HasLengthIndex<usize>(以及IndexMut<usize>用于可变操作),这意味着您需要一个len()方法和一个index()方法,而Array特质将为其他所有内容提供默认方法,仅使用这两个方法实现。

文档

示例

# use array_ops::*;
# use std::ops::{Index, IndexMut};
#[derive(PartialEq, Eq, Debug)]
struct MyNewtypedVec<A>(Vec<A>);

impl<A> From<Vec<A>> for MyNewtypedVec<A> {
    fn from(vec: Vec<A>) -> Self {
        Self(vec)
    }
}

impl<A> HasLength for MyNewtypedVec<A> {
    fn len(&self) -> usize {
        self.0.len()
    }
}

impl<A> Index<usize> for MyNewtypedVec<A> {
    type Output = A;
    fn index(&self, index: usize) -> &A {
        self.0.index(index)
    }
}

impl<A> IndexMut<usize> for MyNewtypedVec<A> {
    fn index_mut(&mut self, index: usize) -> &mut A {
        self.0.index_mut(index)
    }
}

impl<A> Array for MyNewtypedVec<A> {}
impl<A> ArrayMut for MyNewtypedVec<A> {}

# fn main() {
let mut my_vec = MyNewtypedVec::from(vec![3, 1, 3, 3, 7]);
assert!(my_vec.starts_with(&[3, 1, 3]));
my_vec.sort_unstable();
let expected = MyNewtypedVec::from(vec![1, 3, 3, 3, 7]);
assert_eq!(expected, my_vec);
# }

许可证

版权所有 2020 Bodil Stokke

此软件受Mozilla公共许可证(v. 2.0)的条款约束。如果此文件未附带MPL副本,您可以在http://mozilla.org/MPL/2.0/ 获取一个。

行为准则

请注意,该项目以贡献者行为准则发布。通过参与此项目,您同意遵守其条款。

依赖项

~140KB