| Crates.io | rustecal-types-serde |
| lib.rs | rustecal-types-serde |
| version | 0.1.5 |
| created_at | 2025-05-24 19:19:58.056881+00 |
| updated_at | 2025-08-25 21:10:05.724222+00 |
| description | JSON/CBOR/MessagePack type support for rustecal TypedPublisher/TypedSubscriber |
| homepage | |
| repository | https://github.com/eclipse-ecal/rustecal |
| max_upload_size | |
| id | 1687699 |
| size | 35,775 |
rustecal-types-serde provides Serde-based message wrappers for JSON, CBOR, and MessagePack to use with the typed eCAL Pub/Sub API.
PublisherMessage and SubscriberMessage for seamless integrationArc<T>serde, serde_json, serde_cbor, rmp-serde, rustecal-core, rustecal-pubsubAdd to your workspace Cargo.toml:
[dependencies]
rustecal-types-serde = "0.1"
use serde::{Serialize, Deserialize};
use rustecal::{Ecal, EcalComponents, TypedPublisher};
use rustecal_types_serde::JsonMessage;
#[derive(Serialize, Deserialize, Clone, Debug)]
struct MyData {
msg: String,
}
fn main() -> Result<(), Box<dyn std::error::Error>> {
Ecal::initialize(Some("json publisher"), EcalComponents::DEFAULT, None)?;
let publisher = TypedPublisher::<JsonMessage<MyData>>::new("hello_json")?;
while Ecal::ok() {
let payload = MyData { msg: "Hello from Rust".into() };
let message = JsonMessage::new(payload);
publisher.send(&message, Timestamp::Auto);
std::thread::sleep(std::time::Duration::from_millis(500));
}
Ecal::finalize();
Ok(())
}
use serde::{Serialize, Deserialize};
use rustecal::{Ecal, EcalComponents, TypedSubscriber};
use rustecal_types_serde::JsonMessage;
#[derive(Serialize, Deserialize, Clone, Debug)]
struct MyData {
msg: String,
}
fn main() -> Result<(), Box<dyn std::error::Error>> {
Ecal::initialize(Some("json subscriber"), EcalComponents::DEFAULT, None)?;
let mut subscriber = TypedSubscriber::<JsonMessage<MyData>>::new("hello_json")?;
subscriber.set_callback(|message| {
println!("Received: {}", message.payload.data.msg);
});
while Ecal::ok() {
std::thread::sleep(std::time::Duration::from_millis(500));
}
Ecal::finalize();
Ok(())
}
PublisherMessage
datatype() -> DataTypeInfoto_bytes(&self) -> Arc<[u8]>SubscriberMessage
datatype() -> DataTypeInfofrom_bytes(bytes: Arc<[u8]>, _info: &DataTypeInfo) -> Option<Self>rustecal-types-bytes for raw binary data messagesrustecal-types-protobuf for Protobuf-based messagesrustecal-types-string for UTF-8 string messagesrustecal-samples/pubsub directory