firebae-derive 0.2.0

Derive macros for firebae-cm
Documentation

firebae-derive

Derive macros for firebae-cm.

You normally do not depend on this crate directly — firebae-cm re-exports everything here.

AsFirebaseMap

FCM data, headers and payload fields are map<string, string>. This macro implements IntoFirebaseMap for a struct with named fields, stringifying each field:

use firebae_cm::{AsFirebaseMap, MessageBody, Receiver};

#[derive(AsFirebaseMap)]
struct MessageData {
    custom_field: String,
    another_type: i32,          // becomes "15"
    optional_field: Option<String>, // omitted entirely when None
}

let data = MessageData {
    custom_field: "Hello, world!".to_string(),
    another_type: 15,
    optional_field: None,
};

let body = MessageBody::new(Receiver::topic("subscribers"))
    .data(data)
    .expect("Unable to parse data");

Any type implementing Display can be used as a field value. Option<T> fields are skipped when None rather than serialized as a placeholder.

The generated code resolves firebae-cm through proc-macro-crate, so renaming the dependency in your Cargo.toml is supported.

License

MIT