| Crates.io | js_option |
| lib.rs | js_option |
| version | 0.2.0 |
| created_at | 2021-05-10 13:27:39.386166+00 |
| updated_at | 2025-09-14 15:04:04.176852+00 |
| description | An Option-like type with separate null and undefined variants |
| homepage | |
| repository | https://github.com/ruma/js_option |
| max_upload_size | |
| id | 395529 |
| size | 13,442 |
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): Like Option::SomeNull: Explicitly not some valueUndefined: Implicitly not some valueThis 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).
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize)]
struct MyStruct {
#[serde(default, skip_serializing_if = "JsOption::is_undefined")]
my_field: JsOption<String>,
}