lifers_raylib/lib.rs
1//! Raylib frontend for [lifers].
2//!
3//! Provides `RaylibFrontend` implementations that do all the
4//! displaying and rendering work. It's recommended to use
5//! `FrontendBuilder` for convenience.
6//!
7//! _NOTE:_ See corresponding modules for different kinds of automata.
8//!
9//! The frontend can be used in an event loop, similar to a typical
10//! Raylib
11//! application:
12//!
13//! ```ignore
14//! # use lifers::prelude::*;
15//! # use lifers_raylib::generic::FrontendBuilder;
16//! let game = /* Automaton */
17//! # todo!();
18//! let mut frontend = FrontendBuilder::new((480, 480))
19//! .finish(game);
20//!
21//! while !frontend.window_should_close() {
22//! frontend.display_grid();
23//! frontend.tick();
24//! }
25//! ```
26
27#![warn(
28 clippy::pedantic,
29 clippy::nursery,
30 clippy::cargo,
31 clippy::allow_attributes_without_reason,
32 clippy::arithmetic_side_effects,
33 clippy::as_conversions,
34 clippy::clone_on_copy,
35 clippy::clone_on_ref_ptr,
36 clippy::dbg_macro,
37 clippy::decimal_literal_representation,
38 clippy::default_numeric_fallback,
39 clippy::default_union_representation,
40 clippy::exhaustive_enums,
41 clippy::expect_used,
42 clippy::format_push_string,
43 clippy::if_then_some_else_none
44)]
45#![allow(
46 clippy::must_use_candidate,
47 clippy::redundant_closure_call,
48 clippy::cast_precision_loss,
49 clippy::cast_possible_wrap,
50 clippy::module_name_repetitions
51)]
52
53pub mod generic;
54pub mod life_like;
55mod timer;