-
Notifications
You must be signed in to change notification settings - Fork 44
Serde
Finn Bear edited this page Aug 28, 2025
·
7 revisions
A serde integration is gated behind the "serde" feature flag. It is slower, produces
slightly larger output, and (by extension) is not compatible with the native
bitcode::{Encode, Decode}.
bitcode isn't self-describing, so it doesn't support serde features that rely on self-description:
-
enum's with#[serde(untagged)]or#[serde(tag = ...)]. - Fields with
#[serde(skip_serializing_if = ...)],#[serde(default)], etc. - Types like
serde_json::Value, which internally serialize different types (numbers, arrays, etc.) without a normal enum discriminant.
The serde version of bitcode only supports up to 256 variants per enum.
- The
serdeversion omits theflowinfoandscope_idfields ofstd::net::SocketAddrV6, but thederiveversion keeps them. - The
serdeversion supports recursive types, but thederiveversion (as of version0.6) does not.