| Crates.io | dyn_serde |
| lib.rs | dyn_serde |
| version | 1.1.2 |
| created_at | 2024-12-14 14:44:51.521262+00 |
| updated_at | 2025-08-11 03:26:11.187395+00 |
| description | dynamic serialization and deserialization based on serde |
| homepage | https://crates.io/crates/dyn_serde |
| repository | https://github.com/HyfLink/dyn_serde |
| max_upload_size | |
| id | 1483190 |
| size | 800,718 |
This crate provides support for dynamic serialization and deserialization based on serde with better performance and without unsafe codes.
This crate provides three dyn-compatible version of the serde traits:
Serialize - dyn-compatible version of serde::Serialize:
Serializer - dyn-compatible version of serde::Serializer:
Deserializer - dyn-compatible version of serde::Deserializer:
Following example demonstrates how to perform serialization with a dynamic serializer:
use serde::Serialize
use dyn_serde::Serializer;
// 1. Creates dynamic serializer using `<dyn Serializer>::new`.
let mut buffer = Vec::with_capacity(64);
let mut serializer = serde_json::Serializer::new(std::io::Cursor::new(&mut buffer));
let mut serializer = <dyn Serializer>::new(&mut serializer);
let serializer: &mut dyn Serializer = &mut serializer;
// 2. Just uses the dynamic serializer as a `serde::Serializer`.
let value = "Hello, world!";
value.serialize(serializer).unwrap();
assert_eq!(buffer, b"\"Hello, world!\"");
Following example demonstrates how to perform deserialization with a dynamic deserializer, which is basically the same as serialization:
use serde::Deserialize;
use dyn_serde::Deserializer;
// 1. Creates dynamic deserializer using `<dyn Deserializer>::new`.
let mut deserializer = serde_json::Deserializer::from_str("\"Hello, world!\"");
let mut deserializer = <dyn Deserializer>::new(&mut deserializer);
let deserializer: &mut dyn Deserializer = &mut deserializer;
// 2. Just uses the dynamic deserializer as a `serde::Deserializer`.
let value = String::deserialize(deserializer).unwrap();
assert_eq!(value, "Hello, world!");
To opt off the Rust standard library, you can disable feature std:
dyn_serde = { version = "*", default-features = false }