8 个版本 (破坏性)
0.7.0 | 2023年2月13日 |
---|---|
0.6.0 | 2023年2月3日 |
0.5.0 | 2023年2月3日 |
0.4.1 | 2023年2月3日 |
0.1.0 | 2023年2月2日 |
141 在 模拟 中
每月下载量 37
41KB
786 代码行
Anabaena
Rust的L-System(林德迈尔系统)
特性
示例
海藻
以下是从维基百科上的L-System文章中提取的,以下是对海藻示例的实现
use anabaena::{LSystem, LRulesHash, LRulesSet, Total};
use std::collections::HashMap;
use streaming_iterator::StreamingIterator;
let rules: LRulesHash<(), char, LRulesSet<char>> = |_| HashMap::from([
(
'A',
LRulesSet::new(vec![
(1, vec!['A', 'B']),
]),
),
(
'B',
LRulesSet::new(vec![
(1, vec!['A']),
]),
)
]);
let axiom: Vec<char> = vec!['A'];
let mut lsystem: LSystem<_,_,_, Total> = LSystem::new(
axiom,
rules,
);
assert_eq!(lsystem.next(), Some(&"AB".chars().collect()));
assert_eq!(lsystem.next(), Some(&"ABA".chars().collect()));
assert_eq!(lsystem.next(), Some(&"ABAAB".chars().collect()));
assert_eq!(lsystem.next(), Some(&"ABAABABA".chars().collect()));
assert_eq!(lsystem.next(), Some(&"ABAABABAABAAB".chars().collect()));
assert_eq!(lsystem.next(), Some(&"ABAABABAABAABABAABABA".chars().collect()));
assert_eq!(lsystem.next(), Some(&"ABAABABAABAABABAABABAABAABABAABAAB".chars().collect()));
使用Turtle.rs的示例
维基百科文章中的其他大多数示例在examples/
文件夹中实现,该文件夹使用turtle.rs库来渲染结果。例如,您可以使用以下命令运行B-Tree示例:
cargo run --example btree
依赖项
~335–770KB
~14K SLoC