//! Applets are small integrated programs that the OS makes available to the developer to streamline commonly needed functionality.
//! Applets are small integrated programs that the OS makes available to the developer to streamline commonly needed functionality.
//! Thanks to these integrations the developer can avoid wasting time re-implementing common features and instead use a more reliable base for their application.
//! Thanks to these integrations the developer can avoid wasting time re-implementing common features and instead use a more reliable base for their application.
/// [`Console`] lets the application redirect `stdout` to a simple text displayer on the 3DS screen.
/// [`Console`] lets the application redirect `stdout` to a simple text displayer on the 3DS screen.
/// This means that any text written to `stdout` (e.g. using [`println!`] or [`dbg!`]) will become visible in the area taken by the console.
/// This means that any text written to `stdout` (e.g. using [`println!`] or [`dbg!`]) will become visible in the area taken by the console.
///
///
/// # Notes
/// # Notes
///
///
/// The console will take full possession of the screen handed to it as long as it stays alive. It also supports ANSI codes.
/// The console will take full possession of the screen handed to it as long as it stays alive. It also supports ANSI codes.
///
///
/// # Alternatives
/// # Alternatives
///
///
/// If you'd like to see live `stdout` output while running the application but can't/don't want to show the text on the 3DS itself,
/// If you'd like to see live `stdout` output while running the application but can't/don't want to show the text on the 3DS itself,
/// you can try using [`Soc::redirect_to_3dslink`](crate::services::soc::Soc::redirect_to_3dslink) while activating the `--server` flag for `3dslink` (also supported by `cargo-3ds`).
/// you can try using [`Soc::redirect_to_3dslink`](crate::services::soc::Soc::redirect_to_3dslink) while activating the `--server` flag for `3dslink` (also supported by `cargo-3ds`).
/// There are 24 individual channels in total and each can play a different audio [`Wave`] simultaneuosly.
/// There are 24 individual channels in total and each can play a different audio [`Wave`] simultaneuosly.
///
///
/// # Default
/// # Default
///
///
/// NDSP initialises all channels with default values on creation, but the developer is supposed to change these values to correctly work with the service.
/// NDSP initialises all channels with default values on creation, but the developer is supposed to change these values to correctly work with the service.
///
///
/// In particular:
/// In particular:
/// - Default audio format is set to [`AudioFormat::PCM16Mono`].
/// - Default audio format is set to [`AudioFormat::PCM16Mono`].
/// This service lets the application access a virtual mounted device created using a folder included within the application bundle.
/// This service lets the application access a virtual mounted device created using a folder included within the application bundle.
/// `ctru-rs` will include as RomFS the folder specified in the `Cargo.toml` manifest (or use `./romfs` by default). Look at the [`romfs`](self) module for more information.
/// `ctru-rs` will include as RomFS the folder specified in the `Cargo.toml` manifest (or use `./romfs` by default). Look at the [`romfs`](self) module for more information.
///
///
/// After mounting the RomFS file system, the included files and folders will be accessible exactly like any other file, just by using the drive prefix `romfs:/`.
/// After mounting the RomFS file system, the included files and folders will be accessible exactly like any other file, just by using the drive prefix `romfs:/`.