Skip to main content

Crate dice_rs

Crate dice_rs 

Source
Expand description

dice-rs — Core library for GoDice BLE dice.

Provides domain types, BLE transport abstraction, and a high-level service API for scanning, connecting, and interacting with GoDice devices over Bluetooth Low Energy.

§Quick Start

use dice_rs::{DiceManager, DiceEvent};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let manager = DiceManager::new().await?;
    let devices = manager.scan().await?;

    if devices.is_empty() {
        println!("No GoDice devices found");
        return Ok(());
    }

    let dice = manager.connect(&devices[0]).await?;
    let mut receiver = dice.subscribe();
    while let Ok(event) = receiver.recv().await {
        match event {
            DiceEvent::Stable { face, .. } => println!("Rolled: {face}"),
            DiceEvent::RollStart => println!("Rolling..."),
            DiceEvent::Disconnected => break,
            _ => {}
        }
    }

    Ok(())
}

Re-exports§

pub use model::acceleration::Acceleration;
pub use model::battery_level::BatteryLevel;
pub use model::charging_state::ChargingState;
pub use model::dice::DiceColor;
pub use model::dice::DiceType;
pub use model::face::FaceValue;
pub use model::led::LedColor;
pub use service::dice::Dice;
pub use service::dice::DiceDevice;
pub use service::dice::DiceEvent;
pub use service::manager::DiceManager;

Modules§

ble
BLE protocol layer: commands, events, transport, and UUID constants.
error
model
Domain model types for GoDice.
service
High-level service API: scanner, manager, and dice handle.