#nannou #creative-coding #framework #applications #foundation #component #headless

no-std nannou_core

The core components of nannou - a creative coding framework for Rust. Ideal for libraries and headless/embedded applications that use nannou.

3 releases (breaking)

0.19.0 Jan 17, 2024
0.18.0 Nov 18, 2021
0.17.0 Jun 20, 2021

#140 in Multimedia

Download history 407/week @ 2023-12-21 326/week @ 2023-12-28 371/week @ 2024-01-04 488/week @ 2024-01-11 502/week @ 2024-01-18 460/week @ 2024-01-25 246/week @ 2024-02-01 452/week @ 2024-02-08 593/week @ 2024-02-15 456/week @ 2024-02-22 490/week @ 2024-02-29 574/week @ 2024-03-07 470/week @ 2024-03-14 650/week @ 2024-03-21 613/week @ 2024-03-28 677/week @ 2024-04-04

2,503 downloads per month
Used in 17 crates (3 directly)

MIT license

150KB
3.5K SLoC

nannou_core

nannou's core abstractions.

This crate aims to be a stripped-down foundation for nannou projects that don't require windowing or wgpu graphics. These might include:

  • Headless applications, e.g. for LASER or lighting control.
  • Embedded applications, e.g. driving motors or LEDs in an art installation.
  • rust-gpu shaders which have strict requirements beyond the limitations of no_std.
  • Hot-loaded dynamic libraries that benefit from faster compilation times.

The crate includes nannou's color, math, geometry and noise abstractions without the deep stack of crates required to establish an event loop, interoperate with wgpu, etc. Another way of describing this crate might be "nannou without the I/O".

Crate [features]

The primary feature of this crate is support for #![no_std]. This means we can use the crate for embedded applications and in some cases rust-gpu shaders.

By default, the std feature is enabled. For compatibility with a #![no_std] environment be sure to disable default features (i.e. default-features = false) and enable the libm feature. The libm feature provides some core functionality required by crates

  • std: Enabled by default, enables the Rust std library. One of the primary features of this crate is support for #![no_std]. This means we can use the crate for embedded applications and in some cases rust-gpu shaders. For compatibility with a #![no_std] environment be sure to disable default features (i.e. default-features = false) and enable the libm feature.
  • libm: provides some core math support in the case that std is not enabled. This feature must be enabled if std is disabled.
  • serde: enables the associated serde serialization/deserialization features in glam, palette and rand.

Dependencies

~6MB
~157K SLoC