11 个版本

0.3.1 2021年1月5日
0.3.0 2020年10月21日
0.2.1 2020年10月15日
0.1.6 2020年10月14日

#2195 in Rust 模式

Download history 19/week @ 2024-03-13 34/week @ 2024-03-20 56/week @ 2024-03-27 32/week @ 2024-04-03 57/week @ 2024-04-10 51/week @ 2024-04-17 133/week @ 2024-04-24 58/week @ 2024-05-01 153/week @ 2024-05-08 173/week @ 2024-05-15 155/week @ 2024-05-22 209/week @ 2024-05-29 188/week @ 2024-06-05 371/week @ 2024-06-12 394/week @ 2024-06-19 288/week @ 2024-06-26

1,269 monthly downloads
用于 5 个 crate (3 直接)

BSD-2-Clause

26KB
384

Maintenance

slyce

Сlyce 为 Rust 实现了一个类似于 Python 的切片器。

索引可以按绝对位置或相对于数组末尾(尾部)进行寻址。超出范围的索引将被忽略。

切片索引通过一个枚举表示,该枚举封装了完整的 usize 范围,同时也捕获了“负”或“反向”索引的可能性。这个包为一些常见类型提供了一些 From<T> for Index 实现,因此您可以用数字和选项代替 Index(只需调用 .into() 即可)。

示例

use slyce::{Slice, Index};
let v = vec![10,20,30,40,50];
let render = |s: Slice| format!("{:?}", s.apply(&v).collect::<Vec<_>>());

let start: isize = -3;
let s = slyce::Slice{start: start.into(), end: Index::Default, step: None};
assert_eq!(render(s), "[30, 40, 50]");

let s = slyce::Slice{start: Index::Tail(3), end: Index::Default, step: None};
assert_eq!(render(s), "[30, 40, 50]");

let end: Option<isize> = None;
let s = slyce::Slice{start: Index::Tail(3), end: end.into(), step: None};
assert_eq!(render(s), "[30, 40, 50]");

let s = slyce::Slice{start: Index::Tail(3), end: Index::Default, step: Some(-1)};
assert_eq!(render(s), "[30, 20, 10]");

let s = slyce::Slice{start: Index::Head(4), end: Index::Head(0), step: Some(-1)};
assert_eq!(render(s), "[50, 40, 30, 20]");

let s = slyce::Slice{start: Index::Default, end: Index::Head(0), step: Some(-1)};
assert_eq!(render(s), "[50, 40, 30, 20]");

let s = slyce::Slice{start: Index::Tail(1000), end: 2000.into(), step: None};
assert_eq!(render(s), "[10, 20, 30, 40, 50]");

开发

模糊测试

安装 cargo-fuzz

$ cargo install cargo-fuzz

运行模糊测试器

$ cargo +nightly fuzz run fuzz_target_1

文档

Slyce 使用 Rust 文档注释对源文件进行文档说明。README.md 文件是通过结合 README.tpl 文件和 rustdoc 注释生成的。

$ cargo install cargo-readme
$ ./scripts/gen-readme.sh

README.tpl 文件应包含有关项目治理和工具的文档,而内联的 rustdoc 注释应从用户消费 crate 的角度记录项目实际执行的操作。

许可证

BSD-2-Clause

依赖关系

~235KB