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

Download history

每月下载 210

MIT 许可证

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 上的问题

无运行时依赖