25 个版本
0.3.3 | 2023年12月21日 |
---|---|
0.3.2 | 2023年11月25日 |
0.2.13 | 2023年11月16日 |
0.2.8 | 2023年10月28日 |
0.1.6 | 2023年5月31日 |
25 在 #elements
每月下载 210 次
63KB
460 行
SeqGen
序列生成库
SeqGen 是一个用 Rust 编写的库,它允许您以高效和简单的方式生成序列。
SeqGen 是惰性的,这意味着元素只有在需要时或明确请求时才会生成。
SeqGen 生成的序列实现了 Iterator
特性,因此操作使用熟悉的 Rust 迭代器语法进行。
安装
在项目目录的命令行中运行以下命令
$ cargo add seqgen
或在 Cargo.toml
文件中的 [[dependencies]]
下添加此内容
seqgen = "0.3.3"
示例
斐波那契序列
use seqgen::prelude::*;
fn main() {
let fib_seq = Sequence::new()
.initial_elements(vec![0, 1_u128])
.transition_function(|alive_elements, current_index| {
alive_elements.nth_element(current_index - 1).unwrap()
+ alive_elements.nth_element(current_index - 2).unwrap()
})
.pre_generate(185); // more than 185 would cause u128 overflow.
fib_seq
.alive_elements()
.for_each(|element| println!("{element}"));
}
一个 x-y 序列
use seqgen::prelude::*;
fn main() {
let mut seq = Sequence::new()
.initial_elements(vec!["x".to_string(), "y".to_string()])
.transition_function(|alive_elements, current_element_index| {
let mut string = String::from(
alive_elements
.nth_element(current_element_index - 2)
.unwrap(),
);
string.push_str(
alive_elements
.nth_element(current_element_index - 1)
.unwrap(),
);
string
});
seq.range(0, 10)
.unwrap()
.for_each(|element| println!("{element}"));
}
序列范围
use seqgen::prelude::*;
fn main() {
let mut seq = Sequence::linear_seq();
let range_res = seq.range_mut(10000000, 10000000000);
if let Ok(range) = range_res {
range.for_each(|element| println!("{element}"))
}
}
更多示例请参阅 示例文件夹。
有建议? 为项目贡献力量或打开 GitHub 上的问题。