3 unstable releases
| 0.2.0 | Sep 14, 2025 |
|---|---|
| 0.1.1 | Jun 18, 2022 |
| 0.1.0 | May 10, 2021 |
#240 in Encoding
31,118 downloads per month
Used in 65 crates
(7 directly)
10KB
138 lines
js_option
This crate provides a type JsOption that is very similar to the standard
library's Option type except that it has three variants:
Some(value): LikeOption::SomeNull: Explicitly not some valueUndefined: Implicitly not some value
This type can be useful when you want to deserialize JSON to a Rust struct
and not loose information: A regular Option deserializes to None from
both an explicit null or a missing field (this is due to special casing of
Option in the Deserialize and Serialize derive macros, for other types
a missing field will make deserialization fail unless there is a
#[serde(skip)], #[serde(skip_deserializing)] or #[serde(default)]
attribute).
Example:
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize)]
struct MyStruct {
#[serde(default, skip_serializing_if = "JsOption::is_undefined")]
my_field: JsOption<String>,
}
License
Dependencies
~135KB