rmk-config 0.7.0

Config crate of RMK
Documentation
/// Keyboard identity for USB descriptors and BLE advertising.
pub struct Identity {
    pub name: String,
    pub vendor_id: u16,
    pub product_id: u16,
    pub manufacturer: String,
    pub product_name: String,
    /// `None` when `serial_number` is absent from `keyboard.toml`; the codegen will
    /// substitute `::rmk::config::RMK_BUILD_INFO` so the default is version-stamped.
    pub serial_number: Option<String>,
}

impl crate::KeyboardTomlConfig {
    /// Resolve keyboard identity from TOML config.
    pub fn identity(&self) -> Result<Identity, String> {
        let keyboard = self
            .keyboard
            .as_ref()
            .ok_or_else(|| "keyboard.toml: [keyboard] section is required".to_string())?;
        Ok(Identity {
            name: keyboard.name.clone(),
            vendor_id: keyboard.vendor_id,
            product_id: keyboard.product_id,
            manufacturer: keyboard.manufacturer.clone().unwrap_or_else(|| "RMK".to_string()),
            product_name: keyboard
                .product_name
                .clone()
                .unwrap_or_else(|| "RMK Keyboard".to_string()),
            serial_number: keyboard.serial_number.clone(),
        })
    }
}