Crate cloudevents

source ·
Expand description

This crate implements the CloudEvents Spec for Rust.

use cloudevents::{EventBuilder, AttributesReader, EventBuilderV10};
use chrono::{Utc, DateTime};
use url::Url;

let event = EventBuilderV10::new()
    .id("my_event.my_application")
    .source("http://localhost:8080")
    .ty("example.demo")
    .time(Utc::now())
    .build()?;

println!("CloudEvent Id: {}", event.id());
match event.time() {
    Some(t) => println!("CloudEvent Time: {}", t),
    None => println!("CloudEvent Time: None")
}

This crate includes:

  • The Event data structure, to represent CloudEvent (version 1.0 and 0.3)
  • The EventBuilder trait and implementations, to create Event instances
  • The implementation of serde::Serialize and serde::Deserialize for Event to serialize/deserialize CloudEvents to/from JSON
  • Traits and utilities in message to implement Protocol Bindings
  • Feature-guarded modules for various Protocol Binding implementations, e.g. actix, axum, reqwest, warp, rdkafka

Feature flags

Cloudevents uses a set of feature flags to conditionally compile only the module associated with the Protocol Binding you need:

Re-exports

Modules

Macros

Structs

Enums

Traits