input: ```rust /// Battery service #[gatt_service(uuid = "180f")] struct BatteryService { /// Percentage charge left /// /// Multiline #[characteristic(uuid = "2a19", read, write, notify, value = 99, on_read = battery_level_on_read)] #[descriptor(uuid = "2a20", read, on_read = battery_level_on_read)] #[descriptor(uuid = "2a20", read, value = "Demo description")] level: u8, non_characteristic_field: f32, /// minutes until empty #[characteristic(uuid = "2a22", read, write, notify, value = 42.0)] #[descriptor(uuid = "2a21", read, value = VAL)] #[descriptor(uuid = "2a25", read, value = [8,8])] #[descriptor(uuid = "2b26", read, value = 42u8.to_le_bytes())] rate_of_discharge: f32, #[characteristic(uuid = "2a23", read, write, notify, value = [52u8, 10u8])] tx: [u8; 2], #[characteristic(uuid = "2a38", read, notify)] /// Testing something notify: [u8; 8], #[characteristic(uuid = "2a24", read, write, notify, value = Vec::from_slice(&[1,2,3]).unwrap())] rx: Vec, } ``` expands to: ```rust struct BatteryService { non_characteristic_field: f32, /// Percentage charge left /// /// Multiline level: Characteristic, /// minutes until empty rate_of_discharge: Characteristic, tx: Characteristic<[u8; 2]>, /// Testing something notify: Characteristic<[u8; 8]>, rx: Characteristic>, handle: AttributeHandle, }