| Crates.io | kona-serde |
| lib.rs | kona-serde |
| version | 0.2.2 |
| created_at | 2025-02-20 02:23:08.274771+00 |
| updated_at | 2025-07-31 14:07:17.487531+00 |
| description | Serde related helpers for kona |
| homepage | https://github.com/op-rs/kona |
| repository | https://github.com/op-rs/kona |
| max_upload_size | |
| id | 1562103 |
| size | 50,029 |
kona-serdeSerde related helpers for kona.
This crate extends the serialization and deserialization
functionality provided by alloy-serde to
deserialize raw number quantity values.
This issue arose in u128 toml deserialization where
deserialization of a raw number fails.
This rust playground demonstrates how toml fails to
deserialize a native u128 internal value.
With kona-serde, tagging the inner u128 field with #[serde(with = "kona_serde::quantity")],
allows the u128 or any other type within the following constraints to be deserialized by toml properly.
These are the supported native types:
boolu8u16u32u64u128Below demonstrates the use of the #[serde(with = "kona_serde::quantity")] attribute.
use serde::{Serialize, Deserialize};
/// My wrapper type.
#[derive(Debug, Serialize, Deserialize)]
pub struct MyStruct {
/// The inner `u128` value.
#[serde(with = "kona_serde::quantity")]
pub inner: u128,
}
// Correctly deserializes a raw value.
let raw_toml = r#"inner = 120"#;
let b: MyStruct = toml::from_str(raw_toml).expect("failed to deserialize toml");
println!("{}", b.inner);
// Notice that a string value is also deserialized correctly.
let raw_toml = r#"inner = "120""#;
let b: MyStruct = toml::from_str(raw_toml).expect("failed to deserialize toml");
println!("{}", b.inner);
This code is heavily based on the alloy-serde crate.