50 stable releases

new 5.5.1 May 3, 2025
5.4.0 Feb 7, 2025
5.2.0 Jan 10, 2025
5.1.0 Nov 2, 2024
2.0.0 May 22, 2020

#2429 in Encoding

Download history 235535/week @ 2025-01-12 222457/week @ 2025-01-19 236521/week @ 2025-01-26 271722/week @ 2025-02-02 370828/week @ 2025-02-09 337286/week @ 2025-02-16 379878/week @ 2025-02-23 398189/week @ 2025-03-02 412802/week @ 2025-03-09 397520/week @ 2025-03-16 389820/week @ 2025-03-23 372783/week @ 2025-03-30 382324/week @ 2025-04-06 317929/week @ 2025-04-13 315403/week @ 2025-04-20 311705/week @ 2025-04-27

1,355,011 downloads per month
Used in 613 crates (7 directly)

MIT license

110KB
2K SLoC

zvariant_derive

This crate provides derive macros helpers for zvariant. The zvariant crate re-exports these macros for your convenience so you do not need to use this crate directly.

Status: Stable.

Example code

use zvariant::{serialized::Context, to_bytes, Type, LE};
use serde::{Deserialize, Serialize};

#[derive(Deserialize, Serialize, Type, PartialEq, Debug)]
struct Struct<'s> {
    field1: u16,
    field2: i64,
    field3: &'s str,
}

assert_eq!(Struct::SIGNATURE, "(qxs)");
let s = Struct {
    field1: 42,
    field2: i64::max_value(),
    field3: "hello",
};
let ctxt = Context::new_dbus(LE, 0);
let encoded = to_bytes(ctxt, &s).unwrap();
let decoded: Struct = encoded.deserialize().unwrap().0;
assert_eq!(decoded, s);

Dependencies

~2.2–3MB
~68K SLoC