Skip to content
Finn Bear edited this page Oct 20, 2024 · 5 revisions

Introduction

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}.

Unsupported features

bitcode isn't self-describing, so it doesn't support serde features that rely on self-description:

  • enum's with #[serde(untagged)].
  • 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.

Compatibility notes

  • The serde version omits the flowinfo and scope_id fields of std::net::SocketAddrV6, but the derive version keeps them.
  • The serde version supports recursive types, but the derive version (as of version 0.6) does not.
Clone this wiki locally