4 个版本 (2 个重大更新)

0.3.0 2024年7月10日
0.2.1 2024年6月1日
0.2.0 2024年5月26日
0.1.0 2024年5月5日

#68 in 模拟


2 crate 使用

MIT 许可协议

24KB
452 行代码

lifers

一个旨在泛化细胞自动机创建的 Rust crate。当前功能包括

  • 使用构建者模式轻松创建
  • 快速的模拟引擎
    • 为不同用例提供多个版本
    • 支持 SIMD
  • 为创建模拟提供非常人性化的设计
    • 完全支持构建者模式
    • 为自动机提供多个数据收集函数
  • 支持任意类型的单元状态和相关数据
  • 用于创建自定义前端接口 (WIP)

用法

一个示例,展示了如何在 lifers 中实现康威的生命游戏

use lifers::prelude::*;
use rand::random;

fn main() {
    // Use generic automaton with a 100x100 grid
    let mut game = generic::Automaton::build((100, 100))
        // Initialize all cells with random states (alive or dead)
        .init(|_| random::<bool>())
        // Count neighbors in radius of 1 for each cell
        .map(|(x, y), _, cells| generic::count_neighbors(cells, (x, y), 1, |b| *b))
        // Change cells' state depending on the number of neighbors
        .run(|_, is_alive, neighbors_n| match is_alive {
            true => (2..=3).contains(neighbors_n),
            false => *neighbors_n == 3,
        });
    
    // Compute the next generation
    game.step();
}

依赖项

~610KB
~11K SLoC