#minesweeper #foundation #facade #framework

no-std sweeper

A foundation for Minesweeper implementations in Rust

7 releases (2 breaking)

1.0.0-rc3 May 4, 2020
1.0.0-rc2 May 3, 2020
0.3.1 Apr 29, 2020
0.2.3 Apr 29, 2020
0.1.0 Apr 25, 2020

#1141 in Data structures

26 downloads per month

Zlib license

85KB
1.5K SLoC

Sweeper

Crates.io Docs.rs

A foundation for Minesweeper implementations in Rust.

The purpose of such a crate is to have Minesweeper implementations depend on a common crate, i.e. for them to share the basic code related to managing a Minesweeper session and only bother writing the code for the UI, sound effects, input and such. Such implementations can be seen as frontends to this library.

Feature gates

  • std — enable a dependency on the hosted standard library (enabled by default)

    Without this feature, the crate only depends on core and alloc (meaning that usage in an environment without even a memory allocator is impossible), allowing it to run in a freestanding environment, allowing one to implement Minesweeper on a microcontroller, meaning Arduino Minesweeper, ESP32 Minesweeper, OSDev Minesweeper... you name it.

  • generation — enable random generation (enabled by default)

    Enables the dependency on rand, used for generating random fields. Disable to remove said dependency if you'd like to use your own random field generator.

  • serialization — enable support for field serialization (enabled by default, disable to speed up compilation)

    Enables the dependency on serde and its derive macros, which allows one to serialize and deserialize a field to store it on the hard drive, send it over the network or otherwise perform a certain operation which requires having the field in a consistent (platform-independent) format. See the serde crate for more.

  • track_caller — use track_caller attributes

    Places the track_caller attribute on indexing operators and other panicking methods, improving panic messages. Requires a nightly compiler as of Rust 1.43.0.

Dependencies

~0–570KB
~10K SLoC