Conway's Game of Life, in Rust
Simple menu-driven implementation that lets you generate a random board with given dimensions or load from a file.
From there, you can step to the next iteration, save the current board, or go back to generate/load.
The file loading code is a nightmare.
It at least works on my machine.
(G)enerate, (L)oad, (E)xit: l
File: example.txt
17,17
-----------------
-----------------
----###---###----
-----------------
--#----#-#----#--
--#----#-#----#--
--#----#-#----#--
----###---###----
-----------------
----###---###----
--#----#-#----#--
--#----#-#----#--
--#----#-#----#--
-----------------
----###---###----
-----------------
-----------------
(I)terate, (S)ave, (B)ack: i
17,17
-----------------
-----#-----#-----
-----#-----#-----
-----##---##-----
-----------------
-###--##-##--###-
---#-#-#-#-#-#---
-----##---##-----
-----------------
-----##---##-----
---#-#-#-#-#-#---
-###--##-##--###-
-----------------
-----##---##-----
-----#-----#-----
-----#-----#-----
-----------------
(I)terate, (S)ave, (B)ack: i
17,17
-----------------
-----------------
----##-----##----
-----##---##-----
--#--#-#-#-#--#--
--###-##-##-###--
---#-#-#-#-#-#---
----###---###----
-----------------
----###---###----
---#-#-#-#-#-#---
--###-##-##-###--
--#--#-#-#-#--#--
-----##---##-----
----##-----##----
-----------------
-----------------
(I)terate, (S)ave, (B)ack: i
17,17
-----------------
-----------------
----###---###----
-----------------
--#----#-#----#--
--#----#-#----#--
--#----#-#----#--
----###---###----
-----------------
----###---###----
--#----#-#----#--
--#----#-#----#--
--#----#-#----#--
-----------------
----###---###----
-----------------
-----------------
(I)terate, (S)ave, (B)ack: i
17,17
-----------------
-----#-----#-----
-----#-----#-----
-----##---##-----
-----------------
-###--##-##--###-
---#-#-#-#-#-#---
-----##---##-----
-----------------
-----##---##-----
---#-#-#-#-#-#---
-###--##-##--###-
-----------------
-----##---##-----
-----#-----#-----
-----#-----#-----
-----------------
(I)terate, (S)ave, (B)ack: b
(G)enerate, (L)oad, (E)xit: g
X dim: 3
Y dim: 3
3,3
###
-#-
#--
(I)terate, (S)ave, (B)ack: i
3,3
###
--#
---
(I)terate, (S)ave, (B)ack: i
3,3
-##
--#
---
(I)terate, (S)ave, (B)ack: i
3,3
-##
-##
---
(I)terate, (S)ave, (B)ack: i
3,3
-##
-##
---
(I)terate, (S)ave, (B)ack: b
(G)enerate, (L)oad, (E)xit: e